इस ट्यूटोरियल में, मैं 4 PL/SQL अनाम ब्लॉक उदाहरण दे रहा हूं, ताकि आप सीख सकें कि Oracle डेटाबेस में अनाम ब्लॉक कैसे बनाएं और उपयोग करें। पीएल/एसक्यूएल में बेनामी ब्लॉक ऐसे प्रोग्राम होते हैं जिनमें कोई क्रिएट प्रोसीजर या क्रिएट फंक्शन स्टेटमेंट नहीं होता है, और यह ओरेकल डेटाबेस में सेव नहीं होता है। पीएल/एसक्यूएल अनाम ब्लॉक ज्यादातर परीक्षण के लिए या केवल एक समय के लिए ओरेकल डेटाबेस में प्रोग्राम चलाने के लिए उपयोग किया जाता है।
1. पीएल/एसक्यूएल बेनामी ब्लॉक रिवर्स ऑर्डर में नंबर प्रिंट करने के लिए
निम्न पीएल/एसक्यूएल प्रोग्राम लूप के लिए रिवर्स क्लॉज का उपयोग करते हुए 0 से 10 तक की संख्या को उल्टे क्रम में प्रिंट करेगा।
SET SERVEROUTPUT ON;
DECLARE
counter NUMBER;
BEGIN
FOR counter IN REVERSE 0..10 LOOP
DBMS_OUTPUT.PUT_LINE (counter);
END LOOP;
END;
/ आउटपुट
10 9 8 7 6 5 4 3 2 1 0 PL/SQL procedure successfully completed.
2. विभाग में कर्मचारियों की संख्या प्रिंट करें
निम्न PL/SQL प्रोग्राम विभाग के कर्मचारियों की गणना करेगा 90. तालिका Oracle डेटाबेस के HR स्कीमा से है। आप इस स्कीमा को निम्न लिंक से डाउनलोड कर सकते हैं एचआर स्कीमा डाउनलोड करें।
SET SERVEROUTPUT ON;
DECLARE
emp_count NUMBER;
v_department_id NUMBER := 90;
BEGIN
SELECT COUNT ( * )
INTO emp_count
FROM employees
WHERE department_id = v_department_id;
DBMS_OUTPUT.PUT_LINE( 'The employee count is: '
|| emp_count
|| ' for the department with an ID of: '
|| v_department_id);
END;
/ आउटपुट
The employee count is: 3 for the department with an ID of: 90 PL/SQL procedure successfully completed.
3. PL/SQL बेनामी ब्लॉक में इनपुट लें और प्रिंट करें
नीचे दिए गए उदाहरण में, यह उपयोगकर्ता से विभाग आईडी के लिए इनपुट मांगेगा और उस विभाग में कर्मचारियों की संख्या को प्रिंट करेगा, और विभाग का नाम भी प्रिंट करेगा।
SET SERVEROUTPUT ON;
DECLARE
dept_id_var NUMBER (4) := &department_id;
dept_name VARCHAR2 (30);
emp_count NUMBER;
BEGIN
SELECT COUNT ( * )
INTO emp_count
FROM employees
WHERE department_id = dept_id_var;
SELECT department_name
INTO dept_name
FROM departments
WHERE department_id = dept_id_var;
DBMS_OUTPUT.PUT_LINE( 'There are '
|| emp_count
|| ' employees '
|| 'in the '
|| dept_name
|| ' department.');
END;
/ आउटपुट
Enter value for department_id: 60 old 2: dept_id_var NUMBER(4) := &department_id; new 2: dept_id_var NUMBER(4) := 60; There are 4 employees in the IT department. PL/SQL procedure successfully completed.
4. PL/SQL ब्लॉक <<लेबल>> उदाहरण
. के साथनिम्नलिखित PL/SQL ब्लॉक पैरेंट और चाइल्ड ब्लॉक के लिए लेबल का उपयोग कर रहा है। चाइल्ड ब्लॉक पैरेंट ब्लॉक के वेरिएबल को पैरेंट ब्लॉक के लेबल संदर्भ का उपयोग करके एक्सेस करेगा। कार्यक्रम विभागों के लिए नई प्रबंधक आईडी के साथ पुराने प्रबंधक आईडी को अपडेट करेगा।
SET SERVEROUTPUT ON;
<<outer_block>>
DECLARE
mgr_id NUMBER (6) := '¤t_manager_id';
dept_count NUMBER := 0;
BEGIN
SELECT COUNT ( * )
INTO dept_count
FROM departments
WHERE manager_id = outer_block.mgr_id;
IF dept_count > 0
THEN
<<inner_block>>
DECLARE
dept_name VARCHAR2 (30);
mgr_id NUMBER (6) := '&new_manager_id';
BEGIN
SELECT department_name
INTO dept_name
FROM departments
WHERE manager_id = outer_block.mgr_id;
UPDATE departments
SET manager_id = inner_block.mgr_id
WHERE manager_id = outer_block.mgr_id;
DBMS_OUTPUT.PUT_LINE (
'Department manager ID has been changed for ' || dept_name);
END inner_block;
ELSE
DBMS_OUTPUT.PUT_LINE (
'There are no departments listed for the manager');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE (
'There are no departments listed for the manager');
END outer_block;
/ आउटपुट
Enter value for current_manager_id: 100 old 3: mgr_id NUMBER (6) := '¤t_manager_id'; new 3: mgr_id NUMBER (6) := '100'; Enter value for new_manager_id: 201 old 16: mgr_id NUMBER (6) := '&new_manager_id'; new 16: mgr_id NUMBER (6) := '201'; Department manager ID has been changed for Executive PL/SQL procedure successfully completed.