能否在ADF复制活动中使用Oracle存储过程输出至Azure SQL临时表?
可以在ADF复制活动中使用Oracle存储过程的输出参数
完全可以通过ADF复制活动将Oracle存储过程返回的SYS_REFCURSOR类型输出参数数据写入Azure SQL临时表,具体配置步骤如下:
1. 配置Oracle源数据集
- 选择Oracle作为源类型,完成数据库连接信息配置。
- 切换到查询标签页,选择「存储过程」作为查询模式。
- 填写存储过程名称
SP,添加输入参数:- 参数名:
INPUT_DATE,类型选DATE,值设置为'30-Jun-2023'(推荐用ADF管道参数动态传入,替代硬编码)。 - 无需编写你提供的
DECLARE/BEGIN/END块,ADF会自动识别存储过程的SYS_REFCURSOR类型输出参数作为数据源结果集。
- 参数名:
2. 配置Azure SQL目标数据集
- 选择Azure SQL Database作为目标类型,完成实例连接配置。
- 在表标签页,填写临时表名称(如
#TempTable为本地临时表,仅当前会话有效;##TempTable为全局临时表,所有会话可见)。 - 若临时表未提前创建,可在复制活动的设置中开启「自动创建表」,ADF会根据源结果集自动生成表结构;也可提前在Azure SQL中创建好匹配字段结构的临时表。
3. 配置并运行复制活动
- 源选择上述Oracle数据集,目标选择Azure SQL数据集。
- 在映射标签页,核对并调整源输出字段与目标临时表字段的映射关系,确保类型匹配。
- 启动复制活动后,ADF会调用Oracle存储过程,获取
OUT_SP的结果集,自动写入Azure SQL的临时表中。
关键注意事项
- 确保Oracle存储过程返回的
SYS_REFCURSOR是合法的结果集,字段类型与Azure SQL临时表的字段类型兼容。 - 本地临时表
#TempTable仅在当前Azure SQL会话中有效,若后续活动需使用该表,需保证在同一会话内执行;全局临时表需注意并发场景下的资源冲突。
内容的提问来源于stack exchange,提问作者bjnr
相关产品推荐
相关产品推荐

