【问题标题】:Function x is not a procedure or is undefined函数 x 不是过程或未定义
【发布时间】:2017-05-14 18:01:51
【问题描述】:

我有一个接收2个字符串输入并返回一个字符串输出的函数,我们称之为'x',我正在尝试在jsp网站上调用该函数,我已经完成了:

String jobquery = "{call x(?, ?)}";
CallableStatement callStmt = conn.prepareCall(jobquery);

callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
callStmt.setString(1, "hello");
callStmt.setString(2, "world");
callStmt.execute();

这给出了这个错误:

java.sql.SQLException: ORA-06550:第 1 行,第 7 列:PLS-00221:“x”不是过程或未定义 ORA-06550:第 1 行,第 7 列:PL/SQL:语句被忽略

我想,是的,我知道,这不是一个过程,而是一个函数!但为什么它认为这是一个程序?我应该如何运行我的代码?

【问题讨论】:

    标签: oracle function jsp stored-procedures


    【解决方案1】:

    您收到该错误是因为您正在尝试调用过程而不是函数,因为您没有指示任何返回参数。

    返回值需要占位符;您的参数编号也需要保持一致:

    String jobquery = "{ ?=call x(?, ?) }";
    CallableStatement callStmt = conn.prepareCall(jobquery);
    
    callStmt.registerOutParameter(1, OracleTypes.NVARCHAR);
    callStmt.setString(2, "hello");
    callStmt.setString(3, "world");
    callStmt.execute();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多