天天看點

datastage調用存儲過程

建立測試表

create table DB2INST1.PROC_RUN_LOG(
    ETL_DT varchar(8)  not null,
    PROC_NAME varchar(50) not null,
    RUN_TIME timestamp
);      

建立測試存儲過程

#PROC_TEST1

CREATE PROCEDURE "DB2INST1"."PROC_TEST1"  (ETL_DT varchar(8))
  LANGUAGE SQL
BEGIN
  insert into DB2INST1.PROC_RUN_LOG values(ETL_DT,'DB2INST1.PROC_TEST1',current timestamp);
END      

#PROC_TEST2

CREATE PROCEDURE "DB2INST1"."PROC_TEST2"  (ETL_DT varchar(8),OUT LOGCOUNT int)
    LANGUAGE SQL
BEGIN
    declare sqlcode INTEGER DEFAULT 0;
    declare sqlstate CHAR(5);
    declare v_step int;
    declare err_text varchar(1024);
    declare message_text varchar(1024);

    -- 定義異常處理
    declare exit handler for SQLEXCEPTION
    begin
    get diagnostics exception 1  err_text = message_text;
    set message_text=trim('v_step='||char(v_step))||' '||substr(err_text,1,8)||substr(err_text,locate('"',err_text)-1);
    SIGNAL SQLSTATE '72342' SET message_text=message_text;
    end;
    set v_step=1;
    insert into DB2INST1.PROC_RUN_LOG values('20190407','DB2INST1.PROC_TEST1',current timestamp);
    select count(1) into LOGCOUNT from DB2INST1.PROC_RUN_LOG;
END      

PROC_TEST1對應的DS(存儲過程隻帶輸入參數)

(1)配置DS參數

datastage調用存儲過程

(2)引用相關stage

datastage調用存儲過程

(3)配置Stored_Procedure_0

 Genaral标簽下,選擇資料庫類型,配置資料庫名,使用者名,密碼

datastage調用存儲過程

Syntax标簽下,配置存儲過程名及調用文法

datastage調用存儲過程

(3)編譯運作作業即可

datastage調用存儲過程

PROC_TEST2對應的DS(存儲過程帶輸入輸出參數)

(1)配置DS參數

datastage調用存儲過程

(2)引用相關stage

datastage調用存儲過程

(3)配置Stored_Procedure_0

 Genaral标簽下,選擇資料庫類型,配置資料庫名,使用者名,密碼

datastage調用存儲過程

Syntax标簽下,配置存儲過程名及調用文法

datastage調用存儲過程

 Out-->Columns列下添加輸出列(如有多個輸出列時,在此配置全部輸出列的名稱)

datastage調用存儲過程

Stage-->Parameters下配置映射關系(如果有多個輸出列時,在此配置多行映射)

datastage調用存儲過程

儲存編譯運作作業即可