2.有返回值的存储过程(非列表)
如何处理有返回值的存储过程?
案例:编写一个过程,可以输入雇员的编号,返回该雇员的姓名。
pl/sql代码
--有输入和输出的存储过程(返回一个值)
create or replace procedure sun_pro11
(sunNo in number,sunName out varchar2) is
begin
select ename into sunName from kkkk where empno=sunNo;
end;
java代码
public class Test1 {
public static void main(String[] args) {
Connection ct = null;
CallableStatement cs = null;
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//2.创建CallableStatement,专门用来调用存储过程
//看看如何调用有返回值的过程
//创建CallableStatement
cs = ct.prepareCall("{call sun_pro11(?,?)}");
//给第一个?赋值
cs.setInt(1, 7788);
//给第二个?赋值
cs.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR);
//oracle.jdbc.OracleTypes选定的类型取决于第二个问号是什么类型的
//执行
cs.execute();
//取出返回值,要注意?的位置
String name = cs.getString(2);
System.out.println("7788的名字:"+name);
} catch (Exception e) {
e.printStackTrace();
}
finally{
//关闭各个打开的资源
try {
cs.close();
ct.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
有一个返回值的存储过程-非列表形式
最新推荐文章于 2020-09-24 11:20:07 发布