Oracle में, आप INTO
. के बिना डायरेक्ट सेलेक्ट स्टेटमेंट नहीं चला सकते हैं खंड।
यदि आप Oracle 12c और इसके बाद के संस्करण का उपयोग कर रहे हैं, तो आप REF CURSOR
. का उपयोग कर सकते हैं और DBMS_SQL.RETURN_RESULT
create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER) AS
q SYS_REFCURSOR;
BEGIN
OPEN q FOR select * from Employee e where e.id >=empId;
DBMS_SQL.return_result (q); -- This will display the result
select max(salary) into maxSalary from Employee;
END;
पिछले संस्करणों (11g,10g) के लिए, आप REF CURSOR
पास कर सकते हैं एक OUT
के रूप में पैरामीटर और इसे sqlplus
. से प्रिंट करें या TOAD को स्क्रिप्ट के रूप में चलाकर।
create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER,
q OUT SYS_REFCURSOR) AS
BEGIN
OPEN q FOR select * from Employee e where e.id >=empId;
select max(salary) into maxSalary from Employee;
END;
प्रक्रिया को कॉल करने से पहले बाइंड वैरिएबल को परिभाषित करें।
VARIABLE v_empID NUMBER
VARIABLE v_maxsalary NUMBER
VARIABLE v_q REFCURSOR
EXEC :v_empID := 101
EXEC foo(:v_empID,:v_maxsalary,:v_q )
PRINT v_q -- This will display the result from the query.