云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > DB2存储过程学习总结

DB2存储过程学习总结

  • 62 次阅读
  • 3 次下载
  • 2026/4/27 1:41:05

Db2 存储过程学习总结

? 在命令窗口执行存储过程,可以方便看出存储过程在哪一行出现错误,方便修改。

? db2 存储过程常用语句格式

----定义

DECLARE CC VARCHAR(4000); DECLARE SQLSTR VARCHAR(4000); DECLARE st STATEMENT;

DECLARE CUR CURSOR WITH RETURN TO CLIENT FOR CC; ----执行动态SQL不返回 PREPARE st FROM SQLSTR; EXECUTE st; ----执行动态SQL返回

PREPARE CC FROM SQLSTR; OPEN CUR;

----判断是否为空,使用值替代 COALESCE(判断对象,替代值)

----定义临时表

DECLARE GLOBAL TEMPORARY TABLE SESSION.TempResultTable (

Organization int,

OrganizationName varchar(100), AnimalTypeName varchar(20), ProcessType int,

OperatorName varchar(100), OperateCount int )

WITH REPLACE -- 如果存在此临时表,则替换 NOT LOGGED;

? DB2 9.x临时表使用总结

1). DB2的临时表需要用命令Declare Temporary Table来创建, 并且需要创建在用户临时表空间上;

2). DB2在数据库创建时, 缺省并不创建用户临时表空间, 如果需要使用临时表, 则需要用户在创建临时表之前创建用户临时表空间;

3). 临时表的模式为SESSION,SESSION即基于会话的,且在会话之间是隔离的。当会话结束时,临时表的数据被删除,临时表被隐式卸下。对临时表的定义不会在SYSCAT.TABLES中出现 .;

4). 缺省情况下, 在Commit命令执行时, DB2临时表中的所有记录将被删除; 这可以通过创建临时表时指定不同的参数来控制; 5). 运行ROLLBACK命令时, 用户临时表将被删除; 下面是DB2临时表定义的一个示例:

DECLARE GLOBAL TEMPORARY TABLE results (

RECID VARCHAR(32) , --id XXLY VARCHAR(100), --信息来源

LXDH VARCHAR(32 ), --信息来源联系电话 FKRQ DATE --反馈时间

) ON COMMIT PRESERVE ROWS WITH REPLACE NOT LOGGED;

----字符串函数

Substr ----隐形游标迭代

for 游标名 as select....... do 使用 游标名.字段名 内容区块 end for; ----直接返回值或变量

declare rs1 cursor with return to caller for select 0 from sysibm.sysdummy1; ----判断表是否存在

select count(*) into @exists from syscat.tables where tabschema = current schema and tabname='ZY_PROCESSLOG'; ----取前面N条记录

select * from 表名 FETCH FIRST N ROWS ONLY ----定义返回值

declare rs0 cursor with return to caller for select 0 from sysibm.sysdummy1; declare rs1 cursor with return to caller for select 1 from sysibm.sysdummy1; ----得到插入的自增长列最大值

VALUES IDENTITY_VAL_LOCAL() INTO 变量

? Merge into [A] using [B] on 条件 when ***

通过这个merge你能够在一个SQL语句中对一个表同时执行inserts和updates操作. 当然是update还是insert是依据于你的指定的条件判断的,Merge into可以实现用B表来更新A表数据,如果A表中没有,则把B表的数据插入A表. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表

语法如下

MERGE INTO [your table-name] [rename your table here]

USING ( [write your query here] )[rename your query-sql and using just like a table]

ON ([conditional expression here] AND [...]...)

WHEN MATHED THEN [here you can execute some update sql or something else ] WHEN NOT MATHED THEN [execute something else here ! ]

我们先看看一个简单的例子,来介绍一个merge into的用法

merge into products p using newproducts np on (p.product_id = np.product_id) when matched then

update set p.product_name = np.product_name when not matched then

insert values(np.product_id, np.product_name, np.category)

在这个例子里。前面的merger into products using newproducts 表示的用newproducts表来merge到products表,merge的匹配关系就是on后面的条件子句的内容,这里根据两个表的product_id来进行匹配,那么匹配上了我们的操作是就是when matched then的子句里的动作了,这里的动作是update set p.product_name = np.product_name, 很显然就是把newproduct里的内容,赋值到product的product_name里。如果没有匹配上则insert这样的一条语句进去。 大家看看这个merget inot的用法是不是一目了然了呀。这里merger的功能,好比比较,然后选择更新或者是插入,是一系列的组合拳,在做merge的时候,这样同样的情况下,merge的性能是优于同等功能的update/insert语句的。

? Oracle的substr函数简单用法

substr(字符串,截取开始位置,截取长度) //返回截取的字

substr('Hello World',0,1) //返回结果为 'H' *从字符串第一个字符开始截取长度为1的字符串 substr('Hello World',1,1) //返回结果为 'H' *0和1都是表示截取的开始位置为第一个字符 substr('Hello World',2,4) //返回结果为 'ello'

substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符 测试:

select substr('Hello World',-3,3) value from dual;

搜索更多关于: DB2存储过程学习总结 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

Db2 存储过程学习总结 ? 在命令窗口执行存储过程,可以方便看出存储过程在哪一行出现错误,方便修改。 ? db2 存储过程常用语句格式 ----定义 DECLARE CC VARCHAR(4000); DECLARE SQLSTR VARCHAR(4000); DECLARE st STATEMENT; DECLARE CUR CURSOR WITH RETURN TO CLIENT FOR CC; ----执行动态SQL不返回 PREPARE st FROM SQLSTR; EXECUTE st; ----执行动态SQL返回 PREPARE CC FROM SQLSTR; OPEN CU

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com