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