`
yangpanwww
  • 浏览: 621855 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

通用的包+存储过程(Oracle)

阅读更多

 创建包:

 并且指定要调用的存储过程
 

CREATE OR REPLACE PACKAGE PKG_JSJ_TJ  --BODY PKG_JSJ_TJ 包名,可以自己定义
AS
    TYPE my_cursor IS REF CURSOR;
      --GET_gyjmx 为要调用的存储过程
    PROCEDURE GET_gyjmx(nf In Varchar2 ,p_rc OUT my_cursor);
      ---下面还可以写多个要调用的存储过程
    ---PROCEDURE GET_gyjmx2(nf In Varchar2 ,....);

END PKG_JSJ_TJ;

 

    

   包下面的 存储过程的通用写法:

   下面是包的主体:

CREATE OR REPLACE PACKAGE BODY PKG_JSJ_TJ --BODY PKG_JSJ_TJ 包名,和上面的一样
AS
    --sex 输入的参数,可以为多个。
    --p_rc  输出的参数,接收的时候可以ResultSet接收一个结果集
    --GET_gyjmx 存储过程名
    PROCEDURE GET_gyjmx(v_sex In Varchar2 ,p_rc OUT my_cursor)
    Is

    Begin
        OPEN p_rc For --开启这个游标
        ----下面是一些要做的事情
         select id,name,sex from user_table where sex = v_sex;
        ----结束
    End GET_gyjmx; --记得结束啊
    
    -----------------可以写多个存储过程,复制上面的存储过程,改下名字,如:----------------------------
   PROCEDURE GET_gyjmx2(var In Varchar2 ,p_rc OUT my_cursor)
    Is

    Begin
        OPEN p_rc For --开启这个游标
        ----下面是一些要做的事情
        ---执行SQL
        ----结束
    End GET_gyjmx2; --记得结束啊
   
    
    
END PKG_JSJ_TJ;  --记得结束啊

 嘿嘿。。下次使用。。就可以直接套用了。。。。

  

 调用的方法是 :包名.存储过程名称(参数1,参数2,....),

 

  下面是调用这个存储过程get_gyjmx的代码:

  

String call = "{call pkg_jsj_tj.get_gyjmx(?,?)}";
  CallableStatement proc=conn.prepareCall(call);  //调用存储过程
  proc.setString(1,sex);  //给输入参数传值
  proc.registerOutParameter(2,OracleTypes.CURSOR);//声明输出参数是什么类型的
  proc.execute();   //执行
   
  ResultSet rest = (ResultSet) proc.getObject(2); 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics