2016-3-24 工作日志

一 今日工作内容

   写存储过程

二 问题

工作用的数据库是db2,在学校的时候完全没有接触过。

工作要求 如下
  --输入参数  字符串类型  varchar(50)
  --输出参数 
  --结果集 1 定义表头结果集 省份,城市,姓名,微信号,电话号码,地址
  --结果集2 所有含有这个输入参数字符串的人的结果集(空字符串查找全部),按省份,城市升序排序(但北京,上海,重庆,天津等直辖市要排在最前面)

问题1:

模糊查询,以传入的参数作为条件,要用||将参数和%链接起来,如:    '%'||v_companyid||'%';

问题2:

排序的时候北京,上海,重庆,天津等直辖市要排在最前面,需要指定这些数据在最前面,用decode函数。

order by  decode(provname,'北京',1,'上海',2,'天津',3,'重庆',4)

这样北京排在第一,上海排在第二,天津排在第三,重庆排在第四。

如遇到空值时, order by 默认将空值排在最下面,如要排在最上面,则:
order by nulls first


具体代码如下:

--删除一个存储过程

DROP PROCEDURE nbadv.TEST_WCM@    

--创建一个存储过程                        

CREATE PROCEDURE TEST_WCM(    

       --输入参数                           

IN v_companyid     VARCHAR(50)
                         

)                        

      --返回两个结果集                                   

DYNAMIC RESULT SETS 2                                       
    LANGUAGE SQL                                                  
                                                                
BEGIN                                                         
    DECLARE SQLCODE INT;
    DECLARE v_errCode   INT DEFAULT 0;    

 --标题
DECLARE GLOBAL TEMPORARY TABLE captions
(
caption     VARCHAR(500),
width    INT,
property  VARCHAR(40),
format  VARCHAR(20),
fixcol  INT,
align    VARCHAR(20),
datatype  INT,
type        VARCHAR(20),
ordertag    int
 ) ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED; 


 DECLARE GLOBAL TEMPORARY TABLE result
(
provname     VARCHAR(100),
city    VARCHAR(100),
person_name  VARCHAR(40),
weixin  VARCHAR(50),
tel_num VARCHAR(50),
p_address    VARCHAR(200)

 )  ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED; 
 
  insert into session.result( provname,city, person_name, weixin, tel_num, p_address)
    select provname,city, person_name, weixin, tel_num, p_address  from C_TERMINALPERSON_TRUE where person_name  like '%'||v_companyid||'%';


  insert into session.captions( ordertag,caption, width, property, format, fixcol, align, datatype,type)
    values(0,'省份',60,'provname','', 1, 'center', 0,'lable' ),
          (1,'城市',60,'city','', 1, 'center', 0 ,'lable'),
          (2,'姓名',60,'person_name','', 1, 'center', 0 ,'lable'),
          (3,'微信',60,'weixin','', 1, 'center', 0 ,'lable'),
  (4,'电话',60,'tel_num','', 1, 'center', 0 ,'lable'),
  (5,'地址',60,'p_address','', 1, 'center', 0 ,'lable');


  BEGIN
     DECLARE v_captionCur CURSOR  WITH RETURN TO CALLER FOR
      SELECT * FROM SESSION.captions  order by ordertag;
                 
     DECLARE v_resultCur CURSOR  WITH RETURN TO CALLER FOR
      select * from session.result order by decode(provname,'北京',1,'上海',2,'天津',3,'重庆',4), provname,city ;
     
     OPEN v_captionCur;
     OPEN v_resultCur;
  END;
           
                 
END
@
    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值