Azure Data Factory调用Oracle存储过程的实现方法咨询
Azure Data Factory 调用Oracle存储过程可行方案
方案1:通过Lookup活动执行(全版本通用)
- 提前配置好ADF Oracle链接服务,确保使用的Oracle账号拥有目标存储过程的
EXECUTE权限,以及存储过程涉及的业务表的对应读写权限 - 在管道中新建Lookup活动,源类型选择配置好的Oracle链接服务,查询类型选择「查询」
- 在查询输入框中填入Oracle匿名块格式的调用语句,示例如下:
BEGIN 目标存储过程名称(入参1 => '入参值1', 入参2 => '入参值2'); END;
- 关闭Lookup活动的「仅返回第一行」配置项,避免无结果集返回时活动报错
- 若需要获取存储过程的出参判断执行状态,可调整语句为以下格式,执行结果会通过Lookup活动的输出字段返回:
DECLARE exec_status VARCHAR2(200); BEGIN 目标存储过程名称(入参1 => '入参值1', 状态出参 => exec_status); SELECT exec_status AS run_result FROM DUAL; END;
方案2:通过脚本活动执行(ADF V2及以上版本支持)
- 完成Oracle链接服务配置和权限校验后,在管道中新建「脚本」活动
- 活动的链接服务选择目标Oracle数据源,脚本类型选择「非查询」
- 脚本内容直接写入上述Oracle匿名块调用语句即可,动态参数可直接通过ADF管道表达式传入,示例:
BEGIN 目标存储过程名称(入参1 => '@pipeline().parameters.business_date'); END;
注意事项
- 不建议将存储过程封装为Oracle函数后调用:ADF Oracle连接器对函数返回值类型有严格校验,无返回值、返回自定义类型/游标的函数大概率会执行失败,直接调用存储过程兼容性更高
- 若存储过程内部包含DDL语句,需要给Oracle账号额外开放对应DDL操作权限,同时确保链接服务的连接配置没有开启只读限制
- 存储过程执行耗时较长时,可在活动的「常规」配置栏调整超时时间,最长支持设置为7天
内容的提问来源于stack exchange,提问作者vanipriya k
相关产品推荐
相关产品推荐

