怎样在java里面调用oracle里面的自定义数据类型
SQL> SET SERVEROUTPUT ON
SQL> Create Or Replace Procedure lunartest2 Is
2 TYPE NumTab IS TABLE OF emp.empno%TYPE;
3 TYPE NameTab IS TABLE OF emp.ename%TYPE;
4 enums NumTab; -- no need to initialize
5 names NameTab;
6 BEGIN
7 SELECT empno, ename BULK COLLECT INTO enums, names FROM emp;
8 FOR i in enums.FIRST..enums.LAST LOOP
9 DBMS_OUTPUT.PUT_LINE(enums(i) || ' ' || names(i));
10 END LOOP;
11 END;
12 /
如果这样存储过程 我想把enums作为一个结果集返回 而不是只输出
那么存储过程未lunartest2 (enums out numTab)
那么在java里面调用的时候
CallableStatement stmt = connect.prepareCall( "{call lunartest2 (?)} ");
stmt.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);
这里试过oracle.jdbc.OracleTypes.CURSOR
是出错的 报错调用 lunartest2 时参数个数或类型错误
不知道应该是什么类型呢
------解决方案--------------------4 NumTab out enums;
存储过程的第四行改成这样试试,感觉你是没有定义out的参数,整个的存储过程没有输出
------解决方案--------------------谢谢楼上的 存储过程输出已经没问题了 单独在oracle里测试也通过了
现在问题是怎么在java里面调用