使用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中的存储过程的示例的主要内容,如果未能解决你的问题,请参考以下文章