DB2存储过程入门
来源:互联网 发布:淘宝历史宝贝精灵 编辑:程序博客网 时间:2024/05/20 05:24
今天是工作的第一天,被老总要求写db2存储过程,关键是之前并没有学过这个,然后还了解到不同的数据库的存储过程是不太一样的,DB2的存储过程还没有教学的视屏或者详细的文章讲解,学的很吃力。感觉这个点是个问题,以后有技术出来,也不会有相应的文章和讲解,要慢慢摸索解决的方案。
就我今天接触的来说,存储结构给我的感觉就像一个放在数据库的方法一样,他可以传入参数,但是传出的是结果集,也就是resultset的类型对象。感觉上是可以把业务逻辑封装在里面,从而简化业务层或持久层的代码。
模糊查询,以传入的参数作为条件,要用||将参数和%链接起来,如: '%'||v_companyid||'%';
问题2:
排序的时候北京,上海,重庆,天津等直辖市要排在最前面,需要指定这些数据在最前面,用decode函数。
order by decode(provname,'北京',1,'上海',2,'天津',3,'重庆',4)
这样北京排在第一,上海排在第二,天津排在第三,重庆排在第四。
如遇到空值时, order by 默认将空值排在最下面,如要排在最上面,则:
--用DROP PROCEDURE 存储过程名字来删除一个存储过程。
drop PROCEDURE TEST_ZBL@
--用CREATE PROCEDURE 存储过程名字,来创建一个存储过程
CREATE PROCEDURE TEST_ZBL(
--这里表示调用这个存储过程时可以传入的参数,并且类型是varchar
IN v_companyid VARCHAR(50),
)
--这里表示返回的结果集为2(数据库表包括顶部的标题和下面的数据内容:比如城市,下面有北京上海等)
DYNAMIC RESULT SETS 2
LANGUAGE SQL
BEGIN
--我们用DECLARE 变量名 数据类型来在存储过程内创建一个变量
DECLARE SQLCODE INT;
DECLARE v_errCode INT DEFAULT 0;
--这个地方写一个中间表,这个表只在内存中存在,我们把从数据库中读取到的需要的数据放在这个中间表中,然后在这个表上建一个游标来返回结果集
DECLARE GLOBAL TEMPORARY TABLE captions
(
--此表为标题表,上面存储了一些基础的标题数据
caption VARCHAR(500),
width INT,
property VARCHAR(40),
format VARCHAR(40),
fixcol INT,
align VARCHAR(40),
datatype INT,
type VARCHAR(40),
ordertag int
) ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED;
--此为数据表,即数据库中标题下面的数据
DECLARE GLOBAL TEMPORARY TABLE result
(
provname VARCHAR(50),
city VARCHAR(50),
person_name VARCHAR(50),
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 FOR
select * from session.result r order by decode(provname,'北京',1,'上海',2,'重庆',3,'天津',4), provname,city;
--打开这个游标,外部就能通过游标来访问这个结果集
OPEN v_captionCur;
OPEN v_resultCur;
END;
quick:
RETURN v_errCode;
END
@
- DB2存储过程入门
- DB2存储过程入门实例
- DB2存储过程快速入门
- DB2存储过程入门实例
- DB2存储过程快速入门
- DB2纯SQL存储过程入门实践
- DB2存储过程入门(一)
- db2数据库存储过程入门1
- db2数据库存储过程入门2
- db2数据库存储过程入门3
- db2数据库存储过程入门4
- db2数据库存储过程入门5
- db2数据库存储过程入门6
- db2数据库存储过程入门7
- db2数据库存储过程入门8
- DB2的存储过程
- db2存储过程语法
- DB2存储过程
- Codeforces 301A Yaroslav and Sequence 【思维】
- git工作笔记
- [BZOJ1056][HAOI2008]排名系统(平衡树splay)
- MyBatis逆向工程
- Android开发 Activity的四种启动模式
- DB2存储过程入门
- 类的静态成员
- Qt之模型/视图(自定义按钮)
- 寻找Jar或者查询maven依赖写法的网址
- 转载:一个清华学生留学香港后对人生的思考
- Java web 运行时访问不了.dll库
- 15电气李书鹏 作业2
- 使用编译好的mrpt库配置VS2013
- 窗口过程函数-----WindowProc和DefWindowProc函数