服务器 频道

DB2编程序技巧 (三)

  【IT168 服务器学院】1.16 存储过程fence及unfence
  fence的存储过程单独启用一个新的地址空间,而unfence的存储过程和调用它的进程使用同一个地址空间。
  一般而言,fence的存储过程比较安全。
  但有时一些特殊的要求,如要取调用者的pid,则fence的存储过程会取不到,而只有unfence的能取到。
  
  1.17 SP错误处理用法
  如果在SP中调用其它的有返回值的,包括结果集、临时表和输出参数类型的SP,
  DB2会自动发出一个SQLWarning。而在我们原来的处理中对于SQLWarning都
  会插入到日志,这样子最后会出现多条SQLCODE=0的警告信息。
  处理办法:
  定义一个标志变量,比如DECLARE V_STATUS INTEGER DEFAULT 0,
  在CALL SPNAME之后, SET V_STATUS = 1,
  DECLARE CONTINUE HANDLER FOR SQLWARNING
  BEGIN
  IF V_STATUS <> 1 THEN
  --警告处理,插入日志
  SET V_STATUS = 0;
  END IF;
  END;
  1.18 import用法
  db2 import  from  gh1.out   of  DEL messages err.txt insert into  db2inst1.tb_dbf_match_ha
  
  注意要加schma
  
  1.19 values的使用
  如果有多个 set  语句给变量付值,最好使用values语句,改写为一句。这样可以提高效率。
   
  但要注意,values不能将null值付给一个变量。
  values(null) into out_return_code;
  这个语句会报错的。
  
  
  1.20 给select 语句指定隔离级别
  select * from tb_head_stock_balance with ur
   
  1.21 atomic及not atomic区别
  atomic是将该部分程序块指定为一个整体,其中任何一个语句失败,则整个程序块都相当于没做,包括包含在atomic块内的已经执行成功的语句也相当于没做,有点类似于transaction。
  
0
相关文章