国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > DB2 > 正文

DB2編程序技巧 (四)

2019-09-08 23:34:32
字體:
來源:轉載
供稿:網友
1.10 預防字段空值的處理
SELECT DEPTNO ,DEPTNAME ,COALESCE(MGRNO ,'ABSENT'),ADMRDEPT
FROM DEPARTMENT
  COALESCE函數返回()中表達式列表中第一個不為空的表達式,可以帶多個表達式。
  和oracle的isnull類似,但isnull好象只能兩個表達式。
     

1.11 取得處理的記錄數
declare v_count int;
update tb_test set t1=’0’
where t2=’2’;
--檢查修改的行數,判斷指定的記錄是否存在
get diagnostics v_ count=ROW_COUNT;      
只對update,insert,delete起作用.
不對select into 有效


1.12 從存儲過程返回結果集(游標)的用法
1、建一sp返回結果集
CREATE PROCEDURE DB2INST1.Proc1 (  )
   LANGUAGE SQL
   result sets 2(返回兩個結果集)
------------------------------------------------------------------------
-- SQL 存儲過程  
------------------------------------------------------------------------
P1: BEGIN
/tdeclare c1 cursor  with return to caller for  
/t    select  market_code
/t    from    tb_market_code;
/t--指定該結果集用于返回給調用者
/tdeclare c2 cursor  with return to caller for  
/t    select  market_code
/t    from    tb_market_code;
/t open c1;
/t open c2;
END P1/t/t/t/t        


2、建一SP調該sp且使用它的結果集

CREATE PROCEDURE DB2INST1.Proc2 (
out out_market_code char(1))
   LANGUAGE SQL
------------------------------------------------------------------------
-- SQL 存儲過程  
------------------------------------------------------------------------
P1: BEGIN

declare loc1,loc2 result_set_locator varying;  
--建立一個結果集數組
call proc1;
--調用該SP返回結果集。
associate result set locator(loc1,loc2) with procedure proc1;
--將返回結果集和結果集數組關聯
allocate cursor1 cursor for result set loc1;
allocate cursor2 cursor for result set loc2;
--將結果集數組分配給cursor
fetch  cursor1 into out_market_code;
--直接從結果集中賦值
close cursor1;/t  

END P1

3、動態SQL寫法
    DECLARE CURSOR C1 FOR STMT1;  
    PREPARE STMT1 FROM
/t'ALLOCATE C2 CURSOR FOR RESULT SET ?';
4、注意:
一、 如果一個sp調用好幾次,只能取到最近一次調用的結果集。
二、 allocate的cursor不能再次open,但可以close,是close sp中的對應cursor。

1.13 類型轉換函數
select cast ( current time as char(8)) from tb_market_code

1.14 存儲過程的互相調用
目前,c sp可以互相調用。
Sql sp 可以互相調用,
Sql sp 可以調用C sp,
但C sp 不可以調用Sql sp(最新的說法是可以)

1.15 C存儲過程參數注意
create procedure pr_clear_task_ctrl(
IN IN_BRANCH_CODE char(4),
/t      IN IN_TRADEDATE   char(8),
/t   IN IN_TASK_ID     char(2),
      IN IN_SUB_TASK_ID char(4),
      OUT OUT_SUCCESS_FLAG INTEGER )
 
DYNAMIC RESULT SETS 0
LANGUAGE C  
PARAMETER STYLE GENERAL WITH NULLS(如果不是這樣,sql 的sp將不能調用該用c寫的存儲過程,產生保護性錯誤)
NO DBINFO
FENCED
MODIFIES SQL DATA
EXTERNAL NAME 'pr_clear_task_ctrl!pr_clear_task_ctrl'@
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 北流市| 南昌市| 郁南县| 广丰县| 廊坊市| 忻城县| 卓资县| 萨嘎县| 诸暨市| 夏津县| 义马市| 叙永县| 邓州市| 阿拉善左旗| 宿州市| 新绛县| 盐山县| 江津市| 南投市| 凤庆县| 湖南省| 正定县| 福建省| 广水市| 托里县| 神农架林区| 鲁甸县| 土默特右旗| 肥城市| 叙永县| 新野县| 同江市| 明溪县| 古交市| 三江| 颍上县| 明水县| 舞钢市| 乐都县| 陇西县| 蒲城县|