DB2编程序技巧 (三)

正在看的db2教程是:DB2编程序技巧 (三)。  另一种为
      pcursor1: for loopcs1 as  cousor1  cursor  as
select  market_code  as market_code
           from tb_market_code
           for update
        do
        end for;
       这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close。
  但不能使用with  hold 选项。如果在游标循环内要使用commit,rollback则不能使用这种方式。如果没有commit或rollback的要求,推荐使用这种方式(看来For这种方式有问题)。

修改游标的当前记录的方法
update tb_market_code set market_code='0' where current of cursor1;
不过要注意将cursor1定义为可修改的游标
  declare cursor1 cursor for select market_code from tb_market_code 
for update;

for update 不能和GROUP BY、 DISTINCT、 ORDER BY、 FOR READ ONLY及UNION, EXCEPT, or INTERSECT但 UNION ALL除外)一起使用。

1.5 类似decode的转码操作
oracle中有一个函数  select decode(a1,'1','n1','2','n2','n3') aa1 from
db2没有该函数,但可以用变通的方法
select case a1 
when '1' then 'n1' 
when '2' then 'n2' 
else 'n3'
    end as aa1 from

1.6 类似charindex查找字符在字串中的位置
Locate(‘y','dfdasfay')
查找'y' 在'dfdasfay'中的位置。

1.7 类似datedif计算两个日期的相差天数
days(date(‘2001-06-05')) – days(date(‘2001-04-01'))
days 返回的是从  0001-01-01 开始计算的天数
1.8 写UDF的例子
C写见sqllib\samples\cli\udfsrv.c

1.9 创建含identity值(即自动生成的ID)的表
建这样的表的写法
CREATE TABLE test
     (t1 SMALLINT NOT NULL
        GENERATED ALWAYS AS IDENTITY
        (START WITH 500, INCREMENT BY 1),
      t2 CHAR(1));
在一个表中只允许有一个identity的column.

(0)

相关推荐

  • DB2编程序技巧 (三)

    正在看的db2教程是:DB2编程序技巧 (三).  另一种为       pcursor1: for loopcs1 as  cousor1  cursor  as select  market_code  as market_code            from tb_market_code            for update         do         end for;        这种方式的优点是比较简单,不用(也不允许)使用open,fetch,close.   

  • DB2编程序技巧(1)

    正在看的db2教程是:DB2编程序技巧(1). 1 DB2编程 1.1 建存储过程时Create 后一定不要用TAB键 create procedure 的create后只能用空格,而不可用tab健,否则编译会通不过. 切记,切记. 1.2 使用临时表 要注意,临时表只能建在user tempory tables space 上,如果database只有system tempory table space是不能建临时表的. 另外,DB2的临时表和sybase及oracle的临时表不太一样,DB2

  • DB2编程序技巧 (十)

    正在看的db2教程是:DB2编程序技巧 (十).4.11 db2环境变量 db2 重装后用如下方式设置db2的环境变量,以保证sp可编译 将set_cpl 放到AIX上, chmod +x set_cpl, 再运行之 set_cpl的内容 db2set DB2_SQLROUTINE_COMPILE_COMMAND="xlc_r  -g \ -I$HOME/sqllib/include SQLROUTINE_FILENAME.c \ -bE:SQLROUTINE_FILENAME.exp -e S

  • DB2编程序技巧 (九)

    正在看的db2教程是:DB2编程序技巧 (九).4.8 查看本instance下有哪些database db2 LIST DATABASE DIRECTORY  [ on /home/db2inst1 ] 4.9 查看及更改数据库head的配置 请注意,在大多数情况下,更改了数据的配置后,只有在所有的连接全部断掉后才会生效. 查看数据库head的配制 db2 get db cfg for head 更改数据库head的某个设置的值 4.9.1 改排序堆的大小 db2 update db cfg 

  • DB2编程序技巧 (五)

    正在看的db2教程是:DB2编程序技巧 (五).1.16 存储过程fence及unfence fence的存储过程单独启用一个新的地址空间,而unfence的存储过程和调用它的进程使用同一个地址空间. 一般而言,fence的存储过程比较安全. 但有时一些特殊的要求,如要取调用者的pid,则fence的存储过程会取不到,而只有unfence的能取到. 1.17 SP错误处理用法 如果在SP中调用其它的有返回值的,包括结果集.临时表和输出参数类型的SP, DB2会自动发出一个SQLWarning.而

  • DB2编程序技巧 (四)

    正在看的db2教程是:DB2编程序技巧 (四).1.10 预防字段空值的处理 SELECT DEPTNO ,DEPTNAME ,COALESCE(MGRNO ,'ABSENT'),ADMRDEPT FROM DEPARTMENT    COALESCE函数返回()中表达式列表中第一个不为空的表达式,可以带多个表达式.    和oracle的isnull类似,但isnull好象只能两个表达式. 1.11 取得处理的记录数 declare v_count int; update tb_test se

  • DB2编程序技巧 (六)

    正在看的db2教程是:DB2编程序技巧 (六).2.2 SQL语句尽量写复杂SQL    尽量使用大的复杂的SQL语句,将多而简单的语句组合成大的SQL语句对性能会有所改善.    DB2的SQL Engieer对复杂语句的优化能力比较强,基本上不用当心语句的性能问题. Oracle 则相反,推荐将复杂的语句简单化,SQL Engieer的优化能力不是特别好. 这是因为每一个SQL语句都会有reset SQLCODE和SQLSTATE等各种操作,会对数据库性能有所消耗. 一个总的思想就是尽量减少

  • DB2编程序技巧 (八)

    正在看的db2教程是:DB2编程序技巧 (八).4.2 创建Database create database head using codeset IBM-eucCN territory CN; 这样可以支持中文. 4.3 手工做数据库远程(别名)配置 db2  catalog tcpip  node   node1  remote   172.28.200.200 server  50000 db2  catalog db    head   as     test1 at  node   n

  • DB2编程序技巧 (七)

    正在看的db2教程是:DB2编程序技巧 (七).3.4 查看sp使用了哪些表 select bname from syscat.packagedep where btype='T' and pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='PR_CLEAR_MATCH_DIVIDE_SHA'))

  • DB2编程序技巧 (一)

    正在看的db2教程是:DB2编程序技巧 (一).1 DB2编程 1.1 建存储过程时CREATE 后一定不要用TAB键 3 1.2 使用临时表 3 1.3 从数据表中取指定前几条记录 3 1.4 游标的使用 4 注意commit和rollback 4 游标的两种定义方式 4 修改游标的当前记录的方法 5 1.5 类似DECODE的转码操作 5 1.6 类似CHARINDEX查找字符在字串中的位置 5 1.7 类似DATEDIF计算两个日期的相差天数 5 1.8 写UDF的例子 5 1.9 创建含

随机推荐