📄 procedure_outrefcursor_param.java~29~
字号:
package java_call_oracle_procedure;
/*
create or replace view myView
as
select 班级信息表.ClassID,ClassName,StuName,StuAddress from 班级信息表,学生基本信息表
where 学生基本信息表.ClassID=班级信息表.ClassID
create or replace package myPackage
as
type myRefCur is ref cursor;
end;
create or replace procedure myPro6
(
StuName_Param myView.StuName%type,
pCur out myPackage.myRefCur
)
is
begin
open pCur for select * from myView where StuName=StuName_Param;
end myPro6;
*/
//大家注意 操作ORACLE一般功能还是用的java.sql.*包 高级功能用oracle自己的包
import java.sql.Connection;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import oracle.jdbc.OracleTypes;
public class Procedure_OutRefCursor_Param {
private Connection conn = null;
private CallableStatement cstmt = null;
private ResultSet rs = null;
public Procedure_OutRefCursor_Param() {
try {
//通用的连接类获得连接
conn = GetConn.getOracleConn();
cstmt = conn.prepareCall("{call myPro6(?,?)}"); //一个代表in输入参数 第二个问号代表out输出参数
cstmt.setString(1, "WangWu");
//输出参数不能给值 要注册
cstmt.registerOutParameter(2, OracleTypes.CURSOR); //INTEGER是一个静态常量
cstmt.execute(); //执行存储过程cstmt.execute() 返回boolean值 返回false代表成功了 true代表失败
rs = (ResultSet) cstmt.getObject(2);
while (rs.next()) {
//rs里面有四个列 因为输出参数是游标 游标是四个列
String str1 = rs.getString(1);
String str2 = rs.getString(2);
String str3 = rs.getString(3);
String str4 = rs.getString(4);
System.out.println(str1 + " " + str2 + " " + str3 +
" " + str4);
}
} catch (Exception e) {
System.out.println(e.getMessage().toString());
} finally {
safeClose();
}
}
public void safeClose() {
try {
if (conn != null) {
conn.close();
} else if (cstmt != null) {
cstmt.close();
} else if (rs != null) {
rs.close();
}
} catch (Exception e) {
System.out.println(e.getMessage().toString());
}
}
public static void main(String[] args) {
new Procedure_OutRefCursor_Param();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -