You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从SQL Server获取值列表并传入Azure Data Factory(ADF)的For Each活动

解决SQL Server单据编号传入ADF For Each活动的问题

方法一:通过Lookup活动直接生成数组

  • 使用Lookup活动查询SQL Server表,SQL语句返回单列单据编号:
    SELECT DocNumber AS value FROM YourTable
    
  • 保持Lookup活动的第一行仅选项关闭(默认状态),确保返回所有行数据。
  • 在For Each活动的Items属性中,直接引用Lookup的输出数组:
    @activity('Lookup_DocNumbers').output.value
    
    其中Lookup_DocNumbers是你的Lookup活动名称,.output.value会直接返回包含所有单据编号的数组(每个元素为{"value": "单据号"}格式的对象),可被For Each直接遍历。

方法二:用存储过程返回数组格式结果

若必须使用存储过程,需让存储过程返回符合ADF要求的JSON数组:

  • 编写存储过程时,通过FOR JSON PATH将查询结果转换为JSON数组:
    CREATE PROCEDURE GetDocNumbers
    AS
    BEGIN
        SELECT DocNumber AS value FROM YourTable
        FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
    END
    
  • 在ADF的存储过程活动中执行该存储过程,然后在For Each的Items属性中解析返回的JSON:
    @json(activity('SP_GetDocNumbers').output.resultSets[0].rows[0][0])
    
    其中SP_GetDocNumbers是存储过程活动名称,通过.resultSets[0].rows[0][0]获取存储过程返回的JSON字符串,再用@json()转换为数组。

注意事项

  • 确保Lookup或存储过程返回结果的键名统一(如示例中的value),遍历For Each时可通过@item().value获取单个单据编号。
  • 若存在重复单据编号,可在SQL语句中添加DISTINCT去重,避免无效重复遍历。

内容的提问来源于stack exchange,提问作者Mayuran Parathalingam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 19:57:34