0

我有一个返回数组的函数,我从 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

这可能是什么原因,我该如何解决这个错误?

谢谢

4

3 回答 3

2

它必须是大写的:

callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"DATES");

更新:哦,我发现在哪里看到了类似的问题:https ://stackoverflow.com/a/2787880/617455

于 2012-05-29T06:52:54.527 回答
1

您定义了 4 个参数:

connection.prepareCall("begin ? :=datefunc(?,?,?); end;");

但只设置其中三个:

callablestatement.registerOutParameter(1, OracleTypes.ARRAY,"dates");
callablestatement.setInt(2, param1);
callablestatement.setInt(3, param2);
于 2012-05-29T06:54:58.003 回答
1

我遇到了同样的问题,但是这些解决方案都不适合我。

我发现我意识到的 PL/SQL 中缺少一些类型。

于 2016-03-04T19:07:59.617 回答