Connection connection = DriverManager.getConnection(DB_URL,userName,passWord);
ArrayDescriptor des = ArrayDescriptor.createDescriptor("ARRAY_TABLE", connection);
ARRAY array_to_pass = new ARRAY(des,connection,ssoIDs);
CallableStatement cs = connection.prepareCall("{ call TEST1 (?,?,?,?,?) }");
cs.setArray(1, array_to_pass);
// cs.registerOutParameter(2,sdate);
cs.setString(2, sdate);
cs.setString(3, edate);
//st.registerOutParameter(3,OracleTypes.ARRAY,"SchemaName.ARRAY_INT");
cs.registerOutParameter(4, OracleTypes.ARRAY, "ARRAY_TABLE");
cs.registerOutParameter(5, OracleTypes.ARRAY, "ARRAY_TABLE");
cs.execute(); // works fine .
在哪里
String[] aIdtobePassed = actorid.toArray(new String[actorid.size()]);
String[] pIdtobePassed=processid.toArray(new String[processid.size()]);
ArrayDescriptor desforActorId = ArrayDescriptor.createDescriptor("ARRAY_TABLE", connection);
ARRAY actorArray_to_pass = new ARRAY(desforActorId,connection,aIdtobePassed);
ArrayDescriptor desforProcessId = ArrayDescriptor.createDescriptor("ARRAY_TABLE", connection);
ARRAY processArray_to_pass = new ARRAY(desforProcessId,connection,pIdtobePassed);
CallableStatement csforST= connection.prepareCall("{ call TEST2 (?,?,?,?,?,?,?,?) }");
csforST.setArray(1, actorArray_to_pass);
// csforST.setString(1, "as");
csforST.setArray(2, processArray_to_pass);
csforST.registerOutParameter(3, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.registerOutParameter(4, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.registerOutParameter(5, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.registerOutParameter(6, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.registerOutParameter(7, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.registerOutParameter(8, OracleTypes.ARRAY, "ARRAY_TABLE");
csforST.execute(); // do not works
Test1属于一个架构,Test2属于另一个架构。
错误讯息是
州:65000 消息:ORA-06550:第1行第7列: PLS-00201:必须声明标识符'TEST2' ORA-06550:第1行第7列: PL / SQL:忽略语句我正在使用SQL开发人员,其中架构连接到数据库,因为我可以看到类似于它的架构上的插件符号已连接。但我不知道为什么它没有任何一个任何想法请帮忙吗?
答案 0 :(得分:0)
终于找到了为什么我得到这样的错误。我尝试与之建立连接的用户名和密码没有访问第二个架构的权限。
因为我只用他们的名字“{call a(?,?)}”来调用不同模式的proc。它仅指第一个的模式,因此抛出了另一个proc不存在的错误。
使用userName和password建立新连接以调用第二个架构。它工作正常。