I have a PL/SQL query with parameter:
plSqlQuery = "declare "
+ " num integer := 1000;"
+ " myStr varchar2(100):= ?;"
+ "begin "
+ " dbms_output.put_line('abc');"
+ " dbms_output.put_line('hello');"
+ " dbms_output.put_line(myStr);"
+ "end;"
My Java method is something like this:
public static void getData(String sqlQuery) throws SQLException, IOException{
Statement s =conn.createStatement();
try{
s.executeUpdate("begin dbms_output.enable();end;);
s.executeUpdate(sqlQuery);
try{
CallableStatement call = conn.prepareCall("declare num integer = 10000; begin dbms_output.get_lines(?, num); end;)
}
call.registerOutParameter(1,Types.ARRAY, "DBMSOUTPUT_LINESARRAY");
call.execute();
Array array = null;
try {
array = call.getArray(1);
System.out.println(Arrays.asList((Object[])
array.getArray()));
}
finally {
if (array != null)
array.free();
}
Having both above now, I would like to execute my getData method, but I don't know how to pass a parameter to it (myStr).
Can you please tell my where in my Java method I should set my string parameter?
Should it be something like
s.setString(x, "abcdefg");
or
call.setString(2, "abcdefg");
it gives me an Oracle error like
ORA-01008: not all variables bound
I tried both to be honest but did not succeed.