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调用存储过程

保存编译运行作业即可

datastage调用存储过程

 

如有疑问,可加微信一起交流

datastage调用存储过程