博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java调用带有返回值的oracle存储过程
阅读量:6155 次
发布时间:2019-06-21

本文共 1051 字,大约阅读时间需要 3 分钟。

hot3.png

  项目开发中,需要利用存储过程来返回处理的结果,虽然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);

转载于:https://my.oschina.net/u/140722/blog/23586

你可能感兴趣的文章
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>
asp.net开发mysql注意事项
查看>>
(转)Cortex-M3 (NXP LPC1788)之EEPROM存储器
查看>>
ubuntu set defult jdk
查看>>
[译]ECMAScript.next:TC39 2012年9月会议总结
查看>>
【Xcode】编辑与调试
查看>>
用tar和split将文件分包压缩
查看>>
[BTS] Could not find stored procedure 'mp_sap_check_tid'
查看>>
PLSQL DBMS_DDL.ALTER_COMPILE
查看>>
Activity生命周期
查看>>
高仿UC浏览器弹出菜单效果
查看>>
Ubuntu忘记密码,进不了系统的解决方法
查看>>
[原创]白盒测试技术思维导图
查看>>
<<Information Store and Management>> 读书笔记 之八
查看>>
Windows 8 开发之设置合约
查看>>
闲说HeartBeat心跳包和TCP协议的KeepAlive机制
查看>>
MoSQL
查看>>