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

JDBC से Oracle ऑब्जेक्ट-ओरिएंटेड PL/SQL सदस्य प्रक्रियाओं को कॉल करें

jdbc . में आप पीएल/एसक्यूएल ब्लॉकों को out के साथ पार्स और निष्पादित कर सकते हैं चर। आप कॉल करने योग्य विवरण तैयार कर सकते हैं जैसे:

declare
    x foo_type;
begin
    x := foo_type(5);
    x.proc(10);
    ? := x.func(2);
end;

फिर आप उपयोग कर सकते हैं CallableStatement.registerOutParameter और कथन निष्पादित होने के बाद, उपयुक्त get . का उपयोग करें मान को पुनः प्राप्त करने के लिए कार्य करें।

आप सीधे FOO_TYPE तक पहुंच सकते हैं सीधे जावा में टाइप करें, लेकिन क्या आप वाकई ऐसा करना चाहते हैं? एक कार्यशील उदाहरण के लिए नीचे देखें:

SQL> create or replace and compile java source named "TestOutParam" as
  2  import java.sql.*;
  3  import oracle.sql.*;
  4  import oracle.jdbc.driver.*;
  5  
  6  public class TestOutParam {
  7  
  8     public static int get() throws SQLException {
  9  
 10        Connection conn =
 11           new OracleDriver().defaultConnection();
 12  
 13        StructDescriptor itemDescriptor =
 14           StructDescriptor.createDescriptor("FOO_TYPE",conn);
 15  
 16        OracleCallableStatement call =
 17           (OracleCallableStatement) conn.prepareCall("declare\n"
 18              + "    x foo_type;\n"
 19              + "begin\n"
 20              + "    x := foo_type(5);\n"
 21              + "    x.proc(10);\n"
 22              + "    ? := x;\n"
 23              + "end;\n");
 24  
 25        call.registerOutParameter(1, OracleTypes.STRUCT, "FOO_TYPE");
 26  
 27        call.execute();
 28  
 29        STRUCT myObj = call.getSTRUCT(1);
 30  
 31        Datum[] myData = myObj.getOracleAttributes();
 32  
 33        return myData[0].intValue();
 34  
 35     }
 36  }
 37  /

यह दिखाने के लिए एक परीक्षण वर्ग है कि आप registerOutParameter . विधि का उपयोग कैसे कर सकते हैं SQL ऑब्जेक्ट पर, आइए इसे कॉल करें:

SQL> CREATE OR REPLACE
  2  FUNCTION show_TestOutParam RETURN NUMBER
  3  AS LANGUAGE JAVA
  4  NAME 'TestOutParam.get() return java.lang.int';
  5  /

Function created

SQL> select show_testoutparam from dual;

SHOW_TESTOUTPARAM
-----------------
               20



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल एसक्यूएल डेवलपर में डेटटाइम फ़ील्ड से केवल समय कैसे निकालें?

  2. यह बताने के लिए gv$session का उपयोग करें कि क्या कोई प्रश्न हैंग हो रहा है

  3. मैं ORA-00911:अमान्य वर्ण त्रुटि को कैसे हल कर सकता हूं?

  4. मान डालने के लिए केस का उपयोग करना

  5. Oracle PL\SQL अशक्त इनपुट पैरामीटर WHERE स्थिति