【问题标题】:Execute a PL/SQL procedure using Java code使用 Java 代码执行 PL/SQL 过程
【发布时间】:2016-08-09 03:15:33
【问题描述】:

我想使用 Java 代码执行 PL/SQL 过程。到目前为止我已经尝试过了:

Statement myStmt = null;

myStmt = conn.createStatement();
myStmt.executeQuery("EXECUTE ProjetIRSTEA.detectionX");

我收到以下错误消息:

java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement

【问题讨论】:

    标签: java sql jdbc plsql


    【解决方案1】:

    您必须使用 CallableStatement 类来执行存储过程。

    请查看 Oracle 发布的这个示例,了解如何使用这个类: https://docs.oracle.com/cd/A84870_01/doc/java.816/a81354/samapp2.htm

    【讨论】:

      【解决方案2】:

      试试:

      myStmt.executeUpdate("BEGIN ProjetIRSTEA.detectionX; END");
      

      您还可以使用调用由 JDBC 标准定义的存储过程的方法,使用 CallableStatement 接口:

      CallableStatement myCall = connection.prepareCall("{call ProjetIRSTEA.detectionX()}")
      myCall.executeUpdate();
      

      【讨论】:

        【解决方案3】:

        在 Oracle 上,您可以使用 CallableStatement(如上所述),也可以使用 Statement 或 PreparedStatement 发出普通的 sql 查询(但首选前一种方法)。

        String sql = " select ProjetIRSTEA.detectionX() from dual";
        PreparedStatement stmt = conn.prepareStatement(sql);
        stmt.execute();
        

        请注意,您必须在 select 语句中引用系统表对偶。

        【讨论】:

        • 请注意,这仅在 ProjetIRSTEA.detectionX 是一个函数时才有效。不能从 SELECT 语句调用过程。
        猜你喜欢
        • 1970-01-01
        • 2021-02-10
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        相关资源
        最近更新 更多