使用JDBC从Java调用Oracle SQL中的存储过程的示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用JDBC从Java调用Oracle SQL中的存储过程的示例相关的知识,希望对你有一定的参考价值。

我已经看到了调用返回类型为数字的过程的示例,使用CallableStatement然后设置IN参数并根据返回类型注册OUT参数。

但是如果OUT参数是SELECT语句返回的表,怎么做呢?

我试图找到一些例子,但没有用。请帮忙。

这是一些示例代码,其中OUT参数是一个整数

  // Prepare to call the stored procedure RAISESAL.
  // This sample uses the SQL92 syntax
    CallableStatement cstmt = conn.prepareCall ("{? = call RAISESAL (?, ?)}");
  // Declare that the first ? is a return value of type Int
     cstmt.registerOutParameter (1, Types.INTEGER);

    // We want to raise LESLIE's salary by 20,000
    cstmt.setString (2, "LESLIE");  // The name argument is the second ?
    cstmt.setInt (3, 20000);        // The raise argument is the third ?

    // Do the raise
    cstmt.execute ();

    // Get the new salary back
    int new_salary = cstmt.getInt (1);

    System.out.println ("The new salary is: " + new_salary);

但我想要一个例子,其中OUT参数是一个表(SYS_REFCURSOR)。

答案

您需要将第一个参数声明为REF_CURSOR

cstmt.registerOutParameter (1, oracle.jdbc.OracleTypes.CURSOR);

这是一个使用JDBC-OCI的完整示例,但您可以使用JDBC-thin(事实上您应该):https://docs.oracle.com/cd/A97335_02/apps.102/a83724/samapp5.htm

以上是关于使用JDBC从Java调用Oracle SQL中的存储过程的示例的主要内容,如果未能解决你的问题,请参考以下文章

使用 JDBC 的 Oracle 临时表计数错误

使用jdk中的java.sql包中的方法进行jdbc连接

从 0jdbc6 JDBCthin 驱动程序调用具有自定义对象返回类型的 Oracle PL/SQL 过程

java调用Oracle分页存储过程

从 Java JDBC 调用 oracle 函数

带有输入参数的 Oracle JDBC 调用 PL/SQL 过程记录表