访问plsql函数时出错:无效的名称模式

时间:2012-05-29 06:42:23

标签: java oracle jdbc plsql

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

这可能是什么原因以及如何解决此错误?

由于

3 个答案:

答案 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 我意识到了。