Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle संग्रहीत कार्यविधि:परिणाम सेट और आउट पैरामीटर दोनों लौटाएँ

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. oci_connect कनेक्शन विफल

  2. Oracle में SYSDATE फ़ंक्शन

  3. Oracle 12c के साथ CLOB के रूप में संग्रहीत JSON सरणी में तत्वों की संख्या कैसे प्राप्त करें?

  4. Oracle में तिथियां घटाना - संख्या या अंतराल डेटाटाइप?

  5. मैं Oracle SQL में BLOB से पाठ्य सामग्री कैसे प्राप्त करूं?