如何提取Azure Logic Apps中Execute SQL Query的查询结果
我来帮你搞定Azure Logic Apps里提取Execute SQL Query结果的问题,不管是单值还是多行表格,都有清晰的操作方式:
提取单值查询结果
当你的SQL查询返回单个值(比如统计数量、单条记录的某个字段),结果会嵌套在连接器返回的resultsets -> Table1数组的第一个元素里。你可以用表达式直接提取:
- 假设你的查询是
SELECT COUNT(*) AS TotalOrders FROM Orders,那么提取这个数值的表达式是:body('Execute_SQL_Query')?['resultsets']?['Table1'][0]?['TotalOrders'] - 如果是获取单条记录的某个字段,比如
SELECT Email FROM Users WHERE UserID = 456,表达式就是:body('Execute_SQL_Query')?['resultsets']?['Table1'][0]?['Email']
你可以把这个表达式直接用到后续步骤(比如赋值变量、作为参数传给其他连接器),或者在HTTP响应里返回,比如设置响应体为:
{"totalOrders": "@{body('Execute_SQL_Query')?['resultsets']?['Table1'][0]?['TotalOrders']}"}
提取多行表格结果
如果查询返回的是多行数据,Table1本身就是一个包含所有行对象的数组,处理方式分两种:
- 直接返回整个表格作为JSON:
直接用表达式body('Execute_SQL_Query')?['resultsets']?['Table1']作为HTTP响应的内容,就能得到一个标准的JSON数组,比如:[{"CustomerID":1,"Name":"Alice"},{"CustomerID":2,"Name":"Bob"}] - 遍历每一行数据:
添加一个「For Each」步骤,把body('Execute_SQL_Query')?['resultsets']?['Table1']设置为循环的输入。在循环内部,用items('For_Each')?['ColumnName']来引用当前行的指定字段,比如items('For_Each')?['Name']就能拿到每一行的客户名称。
小提示:如果不确定返回结果的结构,可以先运行一次Execute SQL Query步骤,然后在Logic Apps的运行历史里查看该步骤的输出,就能清晰看到resultsets和Table1的具体层级,写表达式的时候更不容易出错。
内容的提问来源于stack exchange,提问作者David Ruiz
相关产品推荐
相关产品推荐

