Oracle 自定义存储过程JAVA调用

roger666888 2012-08-09 07:35:16
Oracle 10g 自定义存储过程,在JAVA调用遇到个问题:

java.sql.SQLException: 无效的名称模式: TEST.VARCHAR_LIST


以下是SQL语句:

create table Temp_Tab1 (id int );

CREATE OR REPLACE
TYPE B_VARCHAR2 AS VARRAY(10000) OF VARCHAR2(255);


CREATE OR REPLACE PACKAGE return_output_test as
TYPE VARCHAR_LIST IS TABLE OF VARCHAR2(32767) INDEX BY BINARY_INTEGER;
PROCEDURE return_output (p_input_iccid_array IN B_VARCHAR2);
END return_output_test;


CREATE OR REPLACE PACKAGE BODY return_output_test AS
PROCEDURE return_output (p_input_iccid_array IN B_VARCHAR2)
AS
va_iccid VARCHAR_LIST;
BEGIN
BEGIN
FOR idx IN p_input_iccid_array.first..p_input_iccid_array.last LOOP
INSERT INTO TEMP_TAb1 VALUES (p_input_iccid_array(idx));
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Exception occured');
END;
END return_output;
END return_output_test;

以下是JAVA语句:



java.lang.Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionString_tOracleSP_1 = "jdbc:oracle:thin:@"
+ "192.168.30.49" + ":" + "1521" + ":" + "test";
java.sql.Connection connection_tOracleSP_1 = java.sql.DriverManager
.getConnection(connectionString_tOracleSP_1, "test","test");
OraclePreparedStatement statement_tOracleSP_1 = (OraclePreparedStatement)connection_tOracleSP_1
.prepareCall("{call "
+ "return_output_talend.return_output" + "(?)}");
String [] arr = {1,2,3,4,5};
ArrayDescriptor oracleVarchar2Collection = ArrayDescriptor.createDescriptor("VARCHAR_LIST",connection_tOracleSP_1);
//这句话告诉我 java.sql.SQLException: 无效的名称模式: TEST.VARCHAR_LIST
ARRAY ora_card_number = new ARRAY (oracleVarchar2Collection, connection_tOracleSP_1, arr );
statement_tOracleSP_1.setObject(1, ora_card_number);


哪位大侠告诉一声,什么问题?


...全文
147 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fw0124 2012-08-09
  • 打赏
  • 举报
回复
要创建varchar_list类型,而不是放在package里面申明。
CREATE OR REPLACE TYPE VARCHAR_LIST AS TABLE OF VARCHAR2(32767);

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧