2013-10-03 155 views
1

我不得不在Oracle中用'OUT'參數做一些java程序。 程序必須是這樣的:Java存儲過程:OUT params

create or replace 
procedure SomeProcedure(input1 IN VARCHAR2, result1 OUT VARCHAR2, result2 OUT VARCHAR2) 
... 
... 

我該怎麼做?我如何指定Java類和方法?如何從這個類和方法創建存儲過程? 任何簡單的例子?

UPD:剛剛解決:

create or replace and compile java source named "TestOutParams" as 
public class TestOutParams{ 
    public static void someMethod(String[] value){ 
     value[0] = "Hello"; 
    } 
}; 
/

create or replace procedure TestOutParams(value OUT VARCHAR2) as 
language java 
NAME 'TestOutParams.someMethod(java.lang.String[])'; 
/

SQL>var value VARCHAR2(40); 
SQL>exec TestOutParams(:value); 
PL/SQL procedure successfully completed. 
SQL>PRINT value; 
VALUE 
--------- 

Hello 

我不知道,爲什麼,但它的工作!

+0

@Augusto不要生氣。我解決了這個問題。 –

回答

-1

嗯,這是這樣的;

CallableStatement stmt = null; 
stmt = conn.prepareCall("begin SomeProcedure(?,?,?); end;"); 
stmt.setString(1, new String("value1"));    // Bind 1st input parameter 
stmt.setString(2, new String("value2"));   // Bind 2nd input parameter 
stmt.registerOutParameter(3, Types.VARCHAR);  // 3rd parameter is OUT 
stmt.execute(); 

String retcod = new String(stmt.getInt(3)); 
+0

他想公開一個java函數。 –