DB2编程序小小技巧
DB2 技巧 小小 编程序
2023-06-13 09:13:55 时间
正在看的db2教程是:DB2编程序小小技巧。
一些编程经验,与大家共享!
1DB2编程
1.1建存储过程时CREATE 后一定不要用TAB键3
1.2使用临时表3
1.3从数据表中取指定前几条记录3
1.4游标的使用4
注意commit和rollback4
游标的两种定义方式4
修改游标的当前记录的方法5
1.5类似DECODE的转码操作5
1.6类似CHARINDEX查找字符在字串中的位置5
1.7类似DATEDIF计算两个日期的相差天数5
1.8写UDF的例子5
1.9创建含IDENTITY值(即自动生成的ID)的表6
1.10预防字段空值的处理6
1.11取得处理的记录数6
1.12从存储过程返回结果集(游标)的用法6
1.13类型转换函数8
1.14存储过程的互相调用8
1.15C存储过程参数注意8
1.16存储过程FENCE及UNFENCE8
1.17SP错误处理用法9
1.18IMPORT用法9
1.19VALUES的使用9
1.20给SELECT 语句指定隔离级别10
1.21ATOMIC及NOT ATOMIC区别10
2DB2编程性能注意10
2.1大数据的导表10
2.2SQL语句尽量写复杂SQL10
2.3SQL SP及C SP的选择10
2.4查询的优化(HASH及RR_TO_RS)11
2.5避免使用COUNT(*) 及EXISTS的方法11
3DB2表及SP管理12
3.1看存储过程文本12
3.2看表结构12
3.3查看各表对SP的影响(被哪些SP使用)12
3.4查看SP使用了哪些表12
3.5查看FUNCTION被哪些SP使用12
3.6修改表结构12
4DB2系统管理13
4.1DB2安装13
4.2创建DATABASE14
4.3手工做数据库远程(别名)配置14
4.4停止启动数据库实例14
4.5连接数据库及看当前连接数据库14
4.6停止启动数据库HEAD15
4.7查看及停止数据库当前的应用程序15
4.8查看本INSTANCE下有哪些DATABASE15
4.9查看及更改数据库HEAD的配置16
4.9.1改排序堆的大小16
4.9.2改事物日志的大小16
4.9.3出现程序堆内存不足时修改程序堆内存大小16
4.10查看及更改数据库实例的配置16
4.10.1打开对锁定情况的监控。16
4.10.2更改诊断错误捕捉级别17
4.11DB2环境变量17
4.12DB2命令环境设置17
4.13改变隔离级别17
4.14管理DB\INSTANCE的参数18
4.15升级后消除版本问题18
4.16查看数据库表的死锁18
1DB2编程
1.1建存储过程时Create 后一定不要用TAB键
createprocedure
的create后只能用空格,而不可用tab健,否则编译会通不过。
切记,切记。
1.2使用临时表
要注意,临时表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建临时表的。
另外,DB2的临时表和sybase及oracle的临时表不太一样,DB2的临时表是在一个session内有效的。所以,如果程序有多线程,最好不要用临时表,很难控制。
建临时表时最好加上 with replace选项,这样就可以不显示的drop 临时表,建临时表时如果不加该选项而该临时表在该session内已创建且没有drop,这时会发生错误。
1.3从数据表中取指定前几条记录
select * from tb_market_code fetch first 1 rows only
但下面这种方式不允许
select market_code into v_market_code
from tb_market_code fetch first 1 rows only;
选第一条记录的字段到一个变量以以下方式代替
declare v_market_code char(1);
declare cursor1 cursor for select market_code from tb_market_code
fetch first 1 rows only for update;
open cursor1;
fetch cursor1 into v_market_code;
close cursor1;
1.4游标的使用
注意commit和rollback
使用游标时要特别注意如果没有加with hold 选项,在Commit和Rollback时,该游标将被关闭。Commit 和Rollback有很多东西要注意。特别小心
游标的两种定义方式
一种为
declare continue handler for not found
begin
set v_notfound = 1;
end;
declare cursor1 cursor with hold for select market_code from tb_market_code for update;
open cursor1;
set v_notfound=0;
fetch cursor1 into v_market_code;
while v_notfound=0 Do
--work
set v_notfound=0;
fetch cursor1 into v_market_code;
end while;
close cursor1;
这种方式使用起来比较复杂,但也比较灵活。特别是可以使用with hold 选项。如果循环内有commit或rollback 而要保持该cursor不被关闭,只能使用这种方式。
&n[1] [2] [3] [4] [5] [6] 下一篇
一些编程经验,与大家共享!
1DB2编程
1.1建存储过程时CREATE 后一定不要用TAB键3
1.2使用临时表3
1.3从数据表中取指定前几条记录3
1.4游标的使用4
注意commit和rollback4
游标的两种定义方式4
修改游标的当前记录的方法5
1.5类似DECODE的转码操作5
1.6类似CHARINDEX查找字符在字串中的位置5
1.7类似DATEDIF计算两个日期的相差天数5
1.8写UDF的例子5
1.9创建含IDENTITY值(即自动生成的ID)的表6
1.10预防字段空值的处理6
1.11取得处理的记录数6
1.12从存储过程返回结果集(游标)的用法6
1.13类型转换函数8
1.14存储过程的互相调用8
1.15C存储过程参数注意8
1.16存储过程FENCE及UNFENCE8
1.17SP错误处理用法9
1.18IMPORT用法9
1.19VALUES的使用9
1.20给SELECT 语句指定隔离级别10
1.21ATOMIC及NOT ATOMIC区别10
2DB2编程性能注意10
2.1大数据的导表10
2.2SQL语句尽量写复杂SQL10
2.3SQL SP及C SP的选择10
2.4查询的优化(HASH及RR_TO_RS)11
2.5避免使用COUNT(*) 及EXISTS的方法11
3DB2表及SP管理12
3.1看存储过程文本12
3.2看表结构12
3.3查看各表对SP的影响(被哪些SP使用)12
3.4查看SP使用了哪些表12
3.5查看FUNCTION被哪些SP使用12
3.6修改表结构12
4DB2系统管理13
4.1DB2安装13
4.2创建DATABASE14
4.3手工做数据库远程(别名)配置14
4.4停止启动数据库实例14
4.5连接数据库及看当前连接数据库14
4.6停止启动数据库HEAD15
4.7查看及停止数据库当前的应用程序15
4.8查看本INSTANCE下有哪些DATABASE15
4.9查看及更改数据库HEAD的配置16
4.9.1改排序堆的大小16
4.9.2改事物日志的大小16
4.9.3出现程序堆内存不足时修改程序堆内存大小16
4.10查看及更改数据库实例的配置16
4.10.1打开对锁定情况的监控。16
4.10.2更改诊断错误捕捉级别17
4.11DB2环境变量17
4.12DB2命令环境设置17
4.13改变隔离级别17
4.14管理DB\INSTANCE的参数18
4.15升级后消除版本问题18
4.16查看数据库表的死锁18
1DB2编程
1.1建存储过程时Create 后一定不要用TAB键
createprocedure
的create后只能用空格,而不可用tab健,否则编译会通不过。
切记,切记。
1.2使用临时表
要注意,临时表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建临时表的。
另外,DB2的临时表和sybase及oracle的临时表不太一样,DB2的临时表是在一个session内有效的。所以,如果程序有多线程,最好不要用临时表,很难控制。
建临时表时最好加上 with replace选项,这样就可以不显示的drop 临时表,建临时表时如果不加该选项而该临时表在该session内已创建且没有drop,这时会发生错误。
1.3从数据表中取指定前几条记录
select * from tb_market_code fetch first 1 rows only
但下面这种方式不允许
select market_code into v_market_code
from tb_market_code fetch first 1 rows only;
选第一条记录的字段到一个变量以以下方式代替
declare v_market_code char(1);
declare cursor1 cursor for select market_code from tb_market_code
fetch first 1 rows only for update;
open cursor1;
fetch cursor1 into v_market_code;
close cursor1;
1.4游标的使用
注意commit和rollback
使用游标时要特别注意如果没有加with hold 选项,在Commit和Rollback时,该游标将被关闭。Commit 和Rollback有很多东西要注意。特别小心
游标的两种定义方式
一种为
declare continue handler for not found
begin
set v_notfound = 1;
end;
declare cursor1 cursor with hold for select market_code from tb_market_code for update;
open cursor1;
set v_notfound=0;
fetch cursor1 into v_market_code;
while v_notfound=0 Do
--work
set v_notfound=0;
fetch cursor1 into v_market_code;
end while;
close cursor1;
这种方式使用起来比较复杂,但也比较灵活。特别是可以使用with hold 选项。如果循环内有commit或rollback 而要保持该cursor不被关闭,只能使用这种方式。
&n
相关文章
- 从Oracle到DB2:迁移数据库的经验(oracle转db2)
- Oracle迁移至DB2:简化您的IT运维(oracle迁移到db2)
- 从Linux系统启动DB2数据库(linux启动db2)
- Linux下DB2安装指南(linux下db2安装)
- 启动Linux上的DB2:一步一步教程(linux启动db2)
- 比较DB2与MySQL:抉择难题(db2mysql)
- 比较DB2和MySQL:特点、优劣势及适用场景(db2与mysql的区别)
- Linux下DB2客户端安装:步骤详解(linuxdb2客户端安装)
- DB2附加Oracle权限的快速操作方法(db2附权oracle)
- 数据库迁移从DB2到Oracle的实践(db2迁移至oracle)
- 将DB2数据库迁移至Oracle数据库的实践(db2转为oracle)
- 比较DB2与ORACLE的异同点(db2跟oracle)
- DB2表数据转到Oracle实现方法及注意事项(db2表转到oracle)
- 从DB2到Oracle一次数据库改变(db2更换成oracle)
- DB2与Oracle数据库挑选一个最适合的方案(db2数据库oracle)
- 从Db2到Oracle,数据库迁移之旅(db2换成Oracle)
- 比较DB2与Oracle的锁定机制(db2与oracle锁)
- 比较两大数据库DB2和Oracle(db2 oracle区别)
- Oracle数据库比DB2强大多步(oracle优于db2)
- 比较技术之争Oracle与DB2效率对比(oracle与db2效率)
- Oracle与DB2数据库业界对比以性能为王(oracle db2对比)
- DB2编程序技巧(一)