【问题标题】:"ORA-00911: invalid character" coming when calling oracle procedure from java从 java 调用 oracle 过程时出现“ORA-00911:无效字符”
【发布时间】:2015-04-14 13:31:03
【问题描述】:

当我在 sql developer 上运行时,我有一个运行良好的程序。

    create or replace
    PROCEDURE test(Order in varchar,Id in number ,status out varchar) As
    logic
    dbms_output.put_line(status);
    end;

但是,当我从 java 调用此过程时,它显示错误 ORA-00911: invalid character.My java code is

    String proc3StoredProcedure=null;
    try {
        proc3StoredProcedure = "{ test(?,?,?) }";

            } catch (Exception e) {
        // TODO Auto-generated catch block
         System.out.println("exception");

        e.printStackTrace();
    }
    CallableStatement cs = conn.prepareCall(proc3StoredProcedure);
    cs.setEscapeProcessing(false);


    cs.setString(1,"17");
    cs.setInt(2,37);

    cs.registerOutParameter(3, java.sql.Types.VARCHAR);
    cs.execute();

    String param4 = cs.getString(2);




    System.out.println("param4=" + param4);


    conn.close();
}

我在 java 代码中做错了什么。我尝试了很多东西,但没有成功。谁能帮助我?

【问题讨论】:

    标签: java stored-procedures plsql ora-00911


    【解决方案1】:

    将分配给proc3StoredProcedure的字符串更改为{ call test(?,?,?) }

    Docs for JDBC SQL escape syntax here。 (过程调用的语法在链接页面的最底部)。

    【讨论】:

    • 感谢 Bob。除了你指出的错误,我需要设置 cs.setEscapeProcessing(true) 而不是 false 或删除该语句。我插入了该语句,因为它给出了 SQL 令牌错误,因为我'{ call test(?,?,?) }' 中没有包含 'call' 字样。
    猜你喜欢
    • 2017-06-10
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多