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

पीएल/एसक्यूएल संग्रहित प्रक्रिया में एक कस्टम सेट कैसे वापस करें

जब तक आप किसी संग्रह का उपयोग करने के लिए विशेष रूप से तैयार नहीं हैं, तब तक रेफरी कर्सर का उपयोग करना आसान होगा:

CREATE OR REPLACE PROCEDURE sample_procedure ( 
   p_some_select_sql_result OUT SYS_REFCURSOR 
) 
AS 
BEGIN
   OPEN p_some_select_sql_result FOR
      SELECT ...
      FROM ...
      JOIN ...
      ... etc.;
END;
/

JDBC से आप तब कुछ ऐसा कर सकते हैं:

cStmt = conn.prepareCall('{ call sample_procedure(?) }');
cStmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cStmt.execute();
rSet = cStmt.getCursor(1);

और फिर आप परिणाम सेट पर पुनरावृति कर सकते हैं जैसा कि आप किसी अन्य के साथ करेंगे।

आप इसके बजाय किसी फ़ंक्शन का उपयोग भी कर सकते हैं:

CREATE OR REPLACE FUNCTION sample_function RETURN SYS_REFCURSOR
AS 
   l_some_select_sql_result
BEGIN
   OPEN l_some_select_sql_result FOR
      SELECT ...
      FROM ...
      JOIN ...
      ... etc.;

   RETURN l_some_select_sql_result;
END;
/

और

cStmt = conn.prepareCall('{ ?=call sample_function }');
cStmt.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cStmt.execute();
rSet = cStmt.getCursor(1);

स्पष्ट रूप से आपको अपनी वास्तविक प्रक्रिया/कार्य में जाने वाले किसी भी अन्य पैरामीटर को संभालने की आवश्यकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल पीएल/एसक्यूएल DBMS_LOCK त्रुटि

  2. Oracle SQL डेवलपर 21.4.2 और SQLcl 21.4.1 अब उपलब्ध हैं

  3. ROWNUM के बिना शीर्ष N पंक्तियों का चयन करना?

  4. तालिका में शब्दों की गिनती पाने के लिए SQL क्वेरी

  5. पाँच भिन्न Oracle तालिकाओं से XML प्राप्त करना