db2 存储过程及函数总结

本文总结了在将Oracle转换为DB2数据库过程中遇到的关于DB2存储过程和函数的知识,包括创建存储过程的示例及其内部逻辑,以及自定义函数`f_check_int`的实现。此外,还详细介绍了DB2中的各种数据类型,如数值型、字符串型、图形字符串、二进制字符串和日期时间型,帮助理解DB2的数据存储和操作。
摘要由CSDN通过智能技术生成

最近公司接了一个项目需要把oracle转成db2数据库  db2数据库网上资源比较少,为此在函数和存储过程中折腾了好长时间,现总结如下:

CREATE OR REPLACE
PROCEDURE QUERY_PICTURE(USER_ORGS VARCHAR(4000),
                                          BEGIN_ROW  INTEGER,
                                          END_ROW    INTEGER,
                                          ADMINTYPE  INTEGER,
                                          BASE_SQL   VARCHAR(4000),
                                          OUT SQL_TEXT   VARCHAR(4000))
    DYNAMIC RESULT SETS 2
BEGIN
  DECLARE CUST_ID        VARCHAR(4000);
  DECLARE CO_ID          VARCHAR(4000);
  DECLARE CO_ORG         VARCHAR(4000);
  DECLARE STR_CUST_IDS   VARCHAR(4000);
  DECLARE QUERY_SQL      VARCHAR(4000);
  DECLARE COUNT_SQL      VARCHAR(4000);
  DECLARE STR_IDS_LENGTH INTEGER;
  DECLARE  CUR_CUST CURSOR for
    SELECT C.PID FROM PICTURE C WHERE C.pSTATE <> -1;
  DECLARE  CUR_CUST_ORG_REL CURSOR for
    SELECT RO.PICTUREID, cast(LISTAGG(O.ORGINCODE) as varchar(32670)) ORGS
      FROM PICTURE_ORG_RELATION RO
      LEFT JOIN ORGANIZATIONS O
        ON O.ORGINCODE = RO.ORGINCODE
      left join picture p
        on p.pid = ro.pictureid
     WHERE O.ORGSTATE <> -1
       and p.pSTATE <> -1
     GROUP BY RO.PICTUREID;
  DECLARE CUR_COUNTS CURSOR with return to caller  FOR COUNT_SQL;
  DECLARE CUR_CUSTS CURSOR with return to caller FOR QUERY_SQL;
  IF ADMINTYPE <> 1 THEN
    OPEN CUR_CUST;
    LOOP
      FETCH CUR_CUST
        INTO CUST_ID;
      --EXIT WHEN CUR_CUST%NOTFOUND;
      set STR_CUST_IDS = '';
      OPEN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值