Ich versuche Array von Werten von Java zu PL/SQL-Funktion übergeben. Ich versuche, wie unten,Übergabe Array von String zu PL/SQL-Funktion von Java
String[] array = {"70" , "2" , "4" , "9" , "329" , "13" , "49" , "33"};
Connection cnn=DriverManager.getConnection(url, username, password);
ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VLIST", cnn);
ARRAY array_to_pass = new ARRAY(descriptor, cnn,array);
OracleCallableStatement pstmt = (OracleCallableStatement) cnn.prepareCall("{? = call GETSRCHLST2(?)}");
pstmt.registerOutParameter(1, Types.VARCHAR);
pstmt.setArray(2, array_to_pass);
pstmt.execute();
String output = pstmt.getString(1);
out.println(output+"\n"+ " "+array_to_pass.length());
Hier in der Funktion keinen Inhalt von Array nennen geleitet wird immer aber array_to_pass.length() ist 8.
Oracle-Prozedur:
CREATE OR REPLACE FUNCTION EDR.GETSRCHLST2(VV VLIST) RETURN VARCHAR2 IS
BN NUMBER;
STRS VARCHAR2(9000):='start';
HH varchar2(30);
BEGIN
STRS:=STRS || '- LIST COUNT: '||VV.COUNT||' - ';
BN:=VV.FIRST;
WHILE BN IS NOT NULL
LOOP
HH:=VV(BN);
STRS:=STRS||HH||' , ';
BN := VV.NEXT(BN);
END LOOP;
RETURN STRS;
EXCEPTION WHEN OTHERS THEN RETURN 'SOME ERROR'||SQLERRM;
end;
Kann jemand Sag mir, wo ich falsch liege?
Siehe das: http://stackoverflow.com/questions/5198856/pass-array-to-oracle-procedure – Kacper
Danke für die Antwort. Ich hatte dieses versucht, aber keinen Nutzen. – techhunter
Hallo, können Sie bitte Ihre ** VLIST ** Typ Erklärung oder DDL posten? – hmmftg