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参数

(2)引用相关stage

(3)配置Stored_Procedure_0

 Genaral标签下,选择数据库类型,配置数据库名,用户名,密码

Syntax标签下,配置存储过程名及调用语法

(3)编译运行作业即可

PROC_TEST2对应的DS(存储过程带输入输出参数)

(1)配置DS参数

(2)引用相关stage

(3)配置Stored_Procedure_0

 Genaral标签下,选择数据库类型,配置数据库名,用户名,密码

Syntax标签下,配置存储过程名及调用语法

 Out-->Columns列下添加输出列(如有多个输出列时,在此配置全部输出列的名称)

Stage-->Parameters下配置映射关系(如果有多个输出列时,在此配置多行映射)

保存编译运行作业即可

 

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值