有一个返回值的存储过程-非列表形式

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();
                }
            }
        }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值