Stored Procedures, Stored Functions & Packages

Stored procedures, functions, और packages पुनः प्रयोज्य database containers हैं जो individual SQL queries को business logic की एक व्यवस्थित, स्थायी library में बदल देते हैं।

12 min read · 11 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

queries copy-paste करने का दुःस्वप्न

कल्पना कीजिए आप TicketDesk system manage करते हैं। हर बार जब एक agent एक ticket बंद करना चाहता है, उन्हें तीन अलग SQL statements execute करने होते हैं: ticket status update करना, resolution timestamp set करना, और एक audit log में एक row insert करना। अगर आपके पास TicketDesk के लिए code लिखते 50 अलग developers हैं, उन सबको इन बिल्कुल एक जैसी queries को copy, paste, और चलाना होगा। क्या होता है अगर कोई audit log step भूल जाता है? database data भ्रष्ट हो जाता है। हम इस तार्किक sequence को database के ही अंदर स्थायी रूप से कैसे lock कर सकते हैं?

Theory

Kitchen Food Processor

raw SQL statements को हर एक दिन हाथ से अलग-अलग सब्ज़ियाँ काटने, पानी उबालने, और मसाले भूनने की तरह सोचिए। एक PL/SQL subprogram custom attachment buttons वाले एक आधुनिक food processor की तरह है। individual हाथ के काम दोहराने के बजाय, आप अपनी सामग्री अंदर रखते हैं, 'Make Soup' button दबाते हैं, और पूर्व-programmed उपकरण को आंतरिक steps अपने-आप सँभालने देते हैं। एक package बस वह kitchen cabinet है जो इन सारे विशेष उपकरणों को एक साफ़ जगह में साथ करीने से व्यवस्थित रखता है।

Theory

नामित PL/SQL Subprograms और Packages

Oracle database dialect में, एक stored procedure एक नामित PL/SQL block है जो एक ख़ास action करता है और माँग पर execute किया जा सकता है। एक stored function एक समान पुनः प्रयोज्य block है जो मुख्य रूप से एक RETURN clause के ज़रिए एक अकेला value गणना और return करने के लिए design किया गया है। एक package एक दो-हिस्से वाला schema object है जो तार्किक रूप से संबंधित procedures, functions, variables, और exceptions को एक अकेले modular container में समूहित करता है। anonymous blocks के उलट, ये नामित units एक बार compile होते हैं और system catalog में स्थायी रूप से store होते हैं।

At a glance

Oracle PL/SQL modular components के बीच structural अंतर

FeatureStored ProcedureStored FunctionPL/SQL Package
Primary Purposeजटिल business actions execute करता हैएक अकेला value calculate करता हैसंबंधित objects साथ समूहित करता है
Return ValueOUT parameters के ज़रिए शून्य या कई return करता हैRETURN clause के ज़रिए बिल्कुल एक value return करना होगासीधे values return नहीं करता
In SQL Select?SELECT के अंदर सीधे call नहीं हो सकताSELECT statements के अंदर सीधे embed हो सकता हैइसके अंदर subprograms अपने ख़ुद के नियम मानते हैं

Practical

Ticket Closure Procedure बनाना

-- Enable console output
SET SERVEROUTPUT ON;

-- Create the procedure to automate ticket closure
CREATE OR REPLACE PROCEDURE close_ticket(
  p_ticket_id IN NUMBER,
  p_status OUT VARCHAR2
) IS
  v_count NUMBER;
BEGIN
  SELECT COUNT(*) INTO v_count FROM tickets WHERE id = p_ticket_id;
  
  IF v_count = 0 THEN
    p_status := 'NOT FOUND';
  ELSE
    UPDATE tickets SET status = 'Closed' WHERE id = p_ticket_id;
    p_status := 'SUCCESS';
    DBMS_OUTPUT.PUT_LINE('Ticket ' || p_ticket_id || ' closed successfully.');
  END IF;
END;
/

Copy करके Oracle FreeSQL खोलें
Oracle FreeSQL, Oracle SQL का मुफ़्त online editor है। Code पहले copy हो जाता है: उसे वहां paste करके Run करें।

Theory

close_ticket syntax का विश्लेषण

code को ध्यान से देखिए। हम CREATE OR REPLACE इस्तेमाल करते हैं ताकि हम procedure को पहले delete किए बिना बाद में modify कर सकें। parameters पर ध्यान दीजिए: p_ticket_id IN mode इस्तेमाल करता है क्योंकि यह procedure में data लाता है, जबकि p_status OUT mode इस्तेमाल करता है ताकि calling environment को एक result वापस भेजे। anonymous blocks के उलट, हम अपनी variable definition जगह शुरू करने के लिए DECLARE के बजाय IS keyword इस्तेमाल करते हैं। compilation server side पर होता है, execution को बिजली सी तेज़ बनाते हुए।

Quiz

कौन सा parameter mode एक PL/SQL stored procedure को caller से एक शुरुआती value स्वीकार करने और उसी caller को एक modified value वापस पास करने दोनों देता है?

  1. IN
  2. OUT
  3. IN OUT
  4. RETURN
Show the answer

IN OUT

IN OUT parameter mode एक दोतरफ़ा रास्ता है: यह subprogram में एक शुरुआती value पास करता है और subprogram को उसी variable के ज़रिए एक नया value overwrite और return करने देता है। RETURN clause functions के लिए अनोखा है, parameter modes के लिए नहीं।

Watch out

दो-हिस्से Package का Disconnect

university lab exams में सबसे आम ग़लती एक package body बिना एक package specification लिखना है, या इसके उलट। याद रखिए कि एक Oracle package के दो अलग components हैं। specification public चेहरा है जो headings और parameters declare करता है। body असल छिपा code implementation रखता है। अगर आप अपनी package specification में एक procedure declare करते हैं पर package body के अंदर इसका बिल्कुल code लिखना भूल जाते हैं, आपका code INVALID के एक object status के साथ compile होने में विफल होगा।

Think first

SELECT Queries के अंदर Procedures

अगर आप एक ऐसा stored procedure सीधे एक standard SQL SELECT statement के अंदर call करने की कोशिश करते हैं जो एक table row update करता है, क्या होगा? tap करने से पहले SQL execution नियम मन में सोचिए।

Show the answer

Oracle एक गंभीर runtime execution error फेंकेगा! Standard SELECT queries सख़्ती से read-only हैं और उन्हें ऐसे side effects पैदा करने की अनुमति नहीं जो database states modify करें। केवल वे stored functions जो database tables नहीं बदलते एक SELECT query statement के अंदर सीधे execute किए जा सकते हैं।

Theory

Enterprise APIs और अगले Semester की Objects

production enterprise environments में, professional backend developers कभी raw database tables को mobile या web clients के सामने उजागर नहीं करते। इसके बजाय, वे packages और procedures को secure APIs के रूप में उजागर करते हैं। आप इस design paradigm को अगले semester अपने Sem 3 BCA303 SQLite mobile course में लौटते देखेंगे। modular packages बनाना आपको Java और C++ में classes, public interfaces, और private encapsulation methods जैसी Object-Oriented Programming अवधारणाओं के लिए सीधे तैयार करता है।

Summary

Key takeaways

  • Stored procedures माँग पर जटिल business operations execute करते हैं और संवाद के लिए IN या OUT parameters इस्तेमाल करते हैं।
  • Stored functions में एक RETURN clause होना चाहिए और वे एक अकेला value calculate और return करने के लिए optimized हैं।
  • Packages दो-हिस्से containers के रूप में काम करते हैं जो public specifications को private छिपी bodies से बाँटते हैं।
  • नामित subprograms एक बार compile होते हैं और स्थायी database data dictionary catalog के अंदर store होते हैं।
  • stored objects इस्तेमाल करना दोहराया network traffic घटाता है और data logic केंद्रित करके data integrity की रक्षा करता है।
  • Memory hook: actions के लिए Procedure, values के लिए function, boxes के लिए package, और चलाने से पहले compile करो!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Cursors and Exception Handling, Packages, Triggers

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Stored Procedures, Stored Functions & Packages · Mastering SQL - PL/SQL (SEC-02 option A) · Gri-Learn