我有一个返回数组的函数,我从java调用这个函数来获取值。
PL / SQL代码
create or replace type dates
is array(10000) of varchar2(32)
功能
CREATE OR REPLACE function datefunc (
id1 IN number,
id2 IN NUMBER
)
RETURN dates
AS
datearray dates;
sdate VARCHAR2 (32);
edate VARCHAR2 (32);
BEGIN
Java代码
connection = datacon.getConnection();
callablestatement =
connection.prepareCall("begin ? :=datefunc(?,?,?); end;");
callablestatement.registerOutParameter
(1, OracleTypes.ARRAY,"dates");
callablestatement.setInt(2, param1);
callablestatement.setInt(3, param2);
callablestatement.execute();
但是当我执行我的代码时,我正在
java.sql.SQLException: invalid name pattern: schema.dates
这可能是什么原因以及如何解决此错误?
由于
答案 0 :(得分:2)
必须是大写的:
callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"DATES");
更新:哦,我发现了我看到类似问题的地方:https://stackoverflow.com/a/2787880/617455
答案 1 :(得分:1)
你定义了4个参数:
connection.prepareCall("begin ? :=datefunc(?,?,?); end;");
但只设置其中三个:
callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"dates");
callablestatement.setInt(2, param1);
callablestatement.setInt(3, param2);
答案 2 :(得分:1)
我遇到了同样的问题但是,没有这些解决方案适合我。
我发现PL / SQL中缺少一些 Type 我意识到了。