Introduction to PL/SQL (Definition & Block Structure)

PL/SQL blocks standard SQL statements को procedural शक्ति से लपेटते हैं, आपको database engine के ठीक अंदर variables, loops, और logic इस्तेमाल करने देते हुए।

8 min read · 10 cards · 2 checks

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


Theory

असली applications के लिए standard SQL क्यों काफ़ी नहीं

कल्पना कीजिए TicketDesk पर आपके manager आपको एक तत्काल helpdesk issue देखने को कहते हैं। अगर priority Critical है, आपको इसे तुरंत एक senior agent को सौंपना होगा। अगर यह High है, आप इसे एक mid level agent को सौंपते हैं। वरना, आप इसे एक trainee को सौंपते हैं। क्या आप यह पूरा routing logic एक अकेले standard SQL statement के अंदर पूरा कर सकते हैं? Standard SQL rows लाने के लिए उत्कृष्ट है, पर इसमें जटिल फ़ैसले लेने, अस्थायी variables declare करने, या database server पर सीधे errors सँभालने की computational शक्ति नहीं है।

Theory

स्वचालित छँटाई कार्यालय

एक basic SQL query को एक mail carrier की तरह सोचिए जो एक ख़ास कमरे में एक चिट्ठी पहुँचाता है। यह एक काम बिल्कुल सही करता है। अब, एक पूरी तरह स्वचालित छँटाई कार्यालय के बारे में सोचिए। यह एक parcel पाता है, एक digital scale पर इसका वज़न जाँचता है, pin code के आधार पर तय करता है कि यह हवाई या सड़क से जाए, और क्षतिग्रस्त parcels को एक विशेष recovery कमरे में भेजता है। एक PL/SQL block उस छँटाई कार्यालय जैसा है। यह standard SQL statements को साथ समूहित करता है और उन्हें एक दिमाग़ देता है।

Theory

एक PL/SQL Block की मूल अवधारणा

Oracle SQL में, PL/SQL का मतलब Procedural Language extension to SQL है। यह एक proprietary programming environment है जो conditional statements, loops, और variables जैसे procedural control structures पेश करके standard SQL का विस्तार करता है। इस language में execution की बुनियादी इकाई को एक block कहते हैं। SQL statements को database engine को एक-एक करके भेजने के बजाय, आप उन्हें एक अकेले block container के अंदर समूहित करते हैं जो एक साथ process होता है।

At a glance

एक Oracle PL/SQL block architecture के चार structural components

Section NameSection का उद्देश्यक्या यह अनिवार्य है?
DECLAREblock में इस्तेमाल memory variables, constants, और cursors परिभाषित करता हैवैकल्पिक
BEGINexecutable SQL और PL/SQL procedural commands रखता हैअनिवार्य
EXCEPTIONruntime database errors या conditions को शालीनता से पकड़ता और सँभालता हैवैकल्पिक
END;procedural unit block के निश्चित समापन का संकेत देता हैअनिवार्य

Practical

एक पूर्ण PL/SQL Block Structure

-- Enable server output to display messages on the console
SET SERVEROUTPUT ON;

DECLARE
  -- Declare a variable to hold a single ticket title
  v_ticket_title VARCHAR2(100);
BEGIN
  -- Fetch a title from our TicketDesk system directly into our variable
  SELECT title INTO v_ticket_title 
  FROM tickets 
  WHERE id = 1;
  
  -- Print the title to the user console
  DBMS_OUTPUT.PUT_LINE('Processing ticket: ' || v_ticket_title);
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    -- Handle the error smoothly if the ticket id does not exist
    DBMS_OUTPUT.PUT_LINE('Warning: Ticket with ID 1 was not found!');
END;
/

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

Quiz

एक valid executable PL/SQL block बनाने के लिए ज़रूरी बिल्कुल न्यूनतम को कौन सी section जोड़ी दर्शाती है?

  1. DECLARE और EXCEPTION
  2. DECLARE और BEGIN
  3. BEGIN और END;
  4. DECLARE, BEGIN, और EXCEPTION
Show the answer

BEGIN और END;

एक PL/SQL block को कम से कम एक सक्रिय execution zone चाहिए। इसलिए, BEGIN और END; ही दो अनिवार्य structural keywords हैं जो Oracle को एक valid block unit process करने के लिए चाहिए। DECLARE और EXCEPTION zones पूरी तरह वैकल्पिक हैं।

Think first

Mental Challenge: Variable पहुँच

अगर आप एक block के DECLARE section के अंदर एक variable परिभाषित करते हैं, क्या आप उसी block के EXCEPTION section के अंदर इसका value पढ़ और बदल सकते हैं? tap करने से पहले सोचिए।

Show the answer

हाँ! DECLARE section में declared कोई भी variable उस ख़ास block के पूरे scope भर पूरी तरह दिखाई देता है। इसका मतलब आप इसे main BEGIN execution block और EXCEPTION error handler दोनों के भीतर पढ़ या update कर सकते हैं।

Watch out

चुप Console का जाल

university laboratory practical exams के दौरान भारतीय BCA students द्वारा की गई सबसे आम ग़लती एक बिल्कुल सही PL/SQL block चलाना और 'PL/SQL procedure successfully completed' कहता एक message देखना है पर कोई printed output बिना। याद रखिए कि default रूप से, Oracle terminal printing बंद कर देता है। आपको अपना block चलाने से पहले environment command SET SERVEROUTPUT ON; execute करना होगा, वरना आपकी DBMS_OUTPUT lines पूरी तरह अदृश्य रहेंगी!

Theory

असली दुनिया के Operations और भविष्य के Semesters

product integrity operations या high traffic ticketing platforms जैसी बड़ी engineering roles में, अलग SQL statements execute करना भयानक network latency पैदा करता है। PL/SQL उन individual statements को साथ package करता है ताकि वे database memory के अंदर स्वाभाविक रूप से execute हों। यह block layout stored procedures और database triggers बनाने की ठोस बुनियाद बनाता है, जिनका इस्तेमाल आप अपने Sem 3 SQLite mobile programming courses में local data structures को कुशलता से manage करने के लिए करेंगे।

Summary

Key takeaways

  • PL/SQL Oracle का procedural extension है जो standard SQL statements के इर्द-गिर्द loops और variables बनाता है।
  • Code एक modular block structure में व्यवस्थित है जो चार साफ़ functional sections से बना है।
  • BEGIN और END; keywords पूरी तरह अनिवार्य हैं, जबकि DECLARE और EXCEPTION वैकल्पिक हैं।
  • Variables block के शीर्ष पर declare होते हैं और पूरी execution unit भर उपलब्ध रहते हैं।
  • console text lines दिखने को पक्का करने के लिए अपने environment में SET SERVEROUTPUT ON; execute कीजिए।
  • Memory hook: अपने औज़ार Declare करो, काम Begin करो, Exceptions सँभालो, और काम End करो!

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 PL/SQL and Conditional Statements

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

Introduction to PL/SQL (Definition & Block Structure) · Mastering SQL - PL/SQL (SEC-02 option A) · Gri-Learn