Theory
વાસ્તવિક Applications માટે Standard SQL કેમ પૂરતું નથી
કલ્પો કે TicketDesk પર તમારા manager તમને એક તાકીદનો helpdesk નો મુદ્દો જોવાનું કહે છે. જો priority Critical હોય, તમારે એ તરત એક senior agent ને સોંપવો પડે. જો એ High હોય, તમે એ એક mid level agent ને સોંપો. નહીંતર, તમે એ એક trainee ને સોંપો. શું તમે આ આખી routing ની logic એક જ standard SQL statement ની અંદર પૂરી કરી શકો? Standard SQL rows લાવવા માટે ઉત્તમ છે, પણ એની પાસે જટિલ નિર્ણયો લેવાની, કામચલાઉ variables જાહેર કરવાની, કે સીધા database server પર errors સંભાળવાની ગણતરીની શક્તિ નથી.
Theory
આપોઆપ ચાલતી Sorting કચેરી
એક પાયાની SQL query ને એક ટપાલી જેવી વિચારો જે એક ચોક્કસ ઓરડામાં પત્ર પહોંચાડે છે. એ એક કામ બરાબર કરે છે. હવે, એક પૂરેપૂરી આપોઆપ ચાલતી sorting કચેરી વિચારો. એ એક પાર્સલ મેળવે છે, એનું વજન એક digital ત્રાજવે તપાસે છે, pin code ના આધારે નક્કી કરે છે કે એ હવાઈ માર્ગે જશે કે રસ્તે, અને બગડેલાં પાર્સલ એક ખાસ recovery ના ઓરડામાં વાળે છે. એક PL/SQL block એ sorting કચેરી જેવો છે. એ standard SQL statements ને સાથે જૂથબદ્ધ કરે છે અને એમને એક મગજથી સજ્જ કરે છે.
Theory
એક PL/SQL Block નો મુખ્ય ખ્યાલ
Oracle SQL માં, PL/SQL એટલે Procedural Language extension to SQL. એ એક માલિકીનું programming વાતાવરણ છે જે conditional statements, loops, અને variables જેવાં procedural નિયંત્રણનાં માળખાં રજૂ કરીને standard SQL ને વિસ્તારે છે. આ ભાષામાં execution ના પાયાના એકમને block કહેવાય છે. Database engine ને SQL statements એક પછી એક મોકલવાને બદલે, તમે એમને એક જ block ના ડબ્બાની અંદર જૂથબદ્ધ કરો છો જે એકસાથે process થાય છે.
At a glance
એક Oracle PL/SQL block ના માળખાના ચાર સંરચનાત્મક ઘટકો
| Section નું નામ | Section નો હેતુ | શું એ Mandatory છે? |
|---|---|---|
| DECLARE | Block માં વપરાતાં memory variables, constants, અને cursors વ્યાખ્યાયિત કરે છે | Optional |
| BEGIN | ચલાવવા યોગ્ય SQL અને PL/SQL procedural commands ધરાવે છે | Mandatory |
| EXCEPTION | Runtime database errors કે સ્થિતિઓ સુઘડ રીતે પકડે અને સંભાળે છે | Optional |
| END; | Procedural એકમના block ના નિર્ણાયક બંધ થવાનો સંકેત આપે છે | Mandatory |
Practical
A Complete 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;
/Quiz
એક માન્ય ચલાવવા યોગ્ય PL/SQL block બનાવવા માટે કઈ sections ની જોડી બિલકુલ ન્યૂનતમ જરૂરિયાત દર્શાવે છે?
- DECLARE અને EXCEPTION
- DECLARE અને BEGIN
- BEGIN અને END;
- DECLARE, BEGIN, અને EXCEPTION
Show the answer
BEGIN અને END;
એક PL/SQL block ને ઓછામાં ઓછો એક સક્રિય execution નો વિસ્તાર જોઈએ. તેથી, એક માન્ય block એકમ process કરવા Oracle ને BEGIN અને END; એ બે જ mandatory સંરચનાત્મક keywords જોઈએ. DECLARE અને EXCEPTION ના વિસ્તારો સંપૂર્ણપણે optional છે.
Think first
માનસિક પડકાર: Variable ની પ્રાપ્યતા
જો તમે એક block ના DECLARE section ની અંદર એક variable વ્યાખ્યાયિત કરો, તો શું તમે એ જ block ના EXCEPTION section ની અંદર એની value વાંચી અને બદલી શકો? Tap કરતાં પહેલાં એના વિશે વિચારો.
Show the answer
હા! DECLARE section માં જાહેર થયેલો કોઈ પણ variable એ ચોક્કસ block ના પૂરા વ્યાપમાં સંપૂર્ણપણે દેખાય છે. એટલે કે તમે એને મુખ્ય BEGIN ના execution block અને EXCEPTION ના error handler બંનેની અંદર વાંચી કે update કરી શકો છો.
Watch out
ચૂપ Console નો ફાંદો
University ની laboratory ની practical પરીક્ષાઓ દરમિયાન ભારતીય BCA students સૌથી સામાન્ય જે ભૂલ કરે છે એ છે એક સંપૂર્ણ PL/SQL block ચલાવવો અને 'PL/SQL procedure successfully completed' કહેતો સંદેશો જોવો પણ કોઈ છપાયેલું output ન દેખાવું. યાદ રાખો કે default રીતે, Oracle terminal પર છાપવાનું બંધ રાખે છે. તમારો block ચલાવતાં પહેલાં તમારે environment નો command SET SERVEROUTPUT ON; ચલાવવો જ પડશે, નહીંતર તમારી DBMS_OUTPUT ની લીટીઓ સંપૂર્ણપણે અદૃશ્ય રહેશે!
Theory
વાસ્તવિક દુનિયાની કામગીરી અને ભવિષ્યનાં Semesters
Product integrity ની કામગીરી કે ભારે traffic વાળા ticketing platforms જેવી મોટી engineering ની ભૂમિકાઓમાં, અલગ અલગ SQL statements ચલાવવાથી ભયંકર network ની ઢીલ ઊભી થાય છે. PL/SQL એ અલગ statements ને સાથે બાંધે છે જેથી એ database ની memory ની અંદર જ મૂળભૂત રીતે ચાલે. આ block નું માળખું stored procedures અને database triggers બનાવવાનો નક્કર પાયો બનાવે છે, જે તમે તમારા Sem 3 ના SQLite mobile programming ના courses માં સ્થાનિક data ના માળખાં કાર્યક્ષમ રીતે સંભાળવા વાપરશો.
Summary
Key takeaways
- PL/SQL એ Oracle નું procedural extension છે જે standard SQL statements ની આસપાસ loops અને variables બાંધે છે.
- Code એક modular block ના માળખામાં ગોઠવાય છે જે ચાર સ્પષ્ટ કાર્યાત્મક sections નું બનેલું છે.
- BEGIN અને END; keywords સંપૂર્ણપણે mandatory છે, જ્યારે DECLARE અને EXCEPTION optional છે.
- Variables block ની ટોચે જાહેર થાય છે અને પૂરા execution ના એકમમાં ઉપલબ્ધ રહે છે.
- Console ની લખાણની લીટીઓ દેખાય એની ખાતરી કરવા તમારા environment માં SET SERVEROUTPUT ON; ચલાવો.
- Memory hook: તમારાં ઓજારો Declare કરો, કામ Begin કરો, Exceptions સંભાળો, અને કામ End કરો!