oracle java 存储过程返回值_java调用带有返回值的oracle存储过程

项目开发中,需要利用存储过程来返回处理的结果,虽然sql语句熟悉,但是写oracle存储过程还是头一回,现在分享出来。

首先在PL/SQL中建立一个存储过程,

create or replace procedure DIRECTNAME(planId in number,directnamestr out varchar2) is

-- in 表示的是输入的参数,out表示的是存储过程输出的参数

namestr varchar2(200);

CURSOR CUR    -- 游标的声明

is

select p.pronam from com_project p

where p.projid = planid;

e  CUR%ROWTYPE;   --将游标的一行的数据赋给 e

begin

if not CUR %isopen then

open CUR;         --游标开启

end if;

fetch CUR into e;

while CUR%found loop

namestr := namestr || e.pronam || ',';  -- oracle的字符串连接使用的是 ||,开始我一直使用 + 号报错

fetch CUR into e;

end loop;

close CUR;     -- 关闭游标

directnamestr := namestr;

end DIRECTNAME;

可以在PL/SQL Developer中测试,开启SQL窗口:

declare

strn varchar2(20);

begin

directname(8,strn);

dbms_output.put_line(strn);

end;

以下是hibernate的调用:

Connection conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();

CallableStatement stmt = conn.prepareCall("{call directname(?,?)}");

stmt.setInt(1, 8);

stmt.registerOutParameter(2, Types.VARCHAR);

stmt.execute();

String result = stmt.getString(2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值