Java 如何为callableStatement注册表
我有以下程序:Java 如何为callableStatement注册表,java,oracle,plsql,Java,Oracle,Plsql,我有以下程序: procedure GetContractInfo(RequestID number, ParamNames out TVarcharArray, ParamValues out TVarcharArray, SessionID in IRBiS_Const.TSessionID default null); type TVarcharArray is table of varchar2(255) index b
procedure GetContractInfo(RequestID number, ParamNames out TVarcharArray, ParamValues out TVarcharArray,
SessionID in IRBiS_Const.TSessionID default null);
type TVarcharArray is table of varchar2(255) index by binary_integer;
如何使用callableStatement将ParamValues注册到TVarcharArray中?这是我的努力:
callableStatement.registerOutParameter(2, Types.ARRAY,"VARCHAR2");
但服务器说
警告:org.hibernate.engine.jdbc.spi.SqlExceptionHelper-SQL错误:
17074,SQLState:99999
错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper-
粗略翻译的模板名称无效:POOL_REQUESTHANDLER.VARCHAR2
从java中,您只能访问模式级集合。 试试这个。 神谕 和java代码
public static void main(String[] args) throws SQLException, Exception {
Connection con = ConnectionDefinition.getOracleConnection();
CallableStatement cl = con.prepareCall("declare " +
" a TVarcharArray;" +
" begin " +
" a := TVarcharArray('A','B','C');" +
" ? := a;" +
" end;\n" +
"");
cl.registerOutParameter(1, Types.ARRAY,"TVARCHARARRAY");
cl.execute();
String[] objArr = (String[]) (cl.getArray(1)).getArray();
for(String tmp: objArr){
System.err.println(tmp);
}
con.close();
}
public static void main(String[] args) throws SQLException, Exception {
Connection con = ConnectionDefinition.getOracleConnection();
CallableStatement cl = con.prepareCall("declare " +
" a TVarcharArray;" +
" begin " +
" a := TVarcharArray('A','B','C');" +
" ? := a;" +
" end;\n" +
"");
cl.registerOutParameter(1, Types.ARRAY,"TVARCHARARRAY");
cl.execute();
String[] objArr = (String[]) (cl.getArray(1)).getArray();
for(String tmp: objArr){
System.err.println(tmp);
}
con.close();
}