我正在尝试实现几个查询/更新Azure SQL Server数据库的Azure Logic应用程序。查询返回一个值或具有多行的表。我不想创建存储过程,而是使用“执行SQL查询”连接器。我的查询在Logic Apps中运行正常,但我没有找到一种方法来提取要在后续步骤中使用的查询的输出,或者在HTTP响应中返回。
有人可以指导我如何对单值和表输出进行此操作吗?
答案 0 :(得分:6)
如果由于某种原因您不想创建SP,或者无法创建SP,您可以在JSON中使用它来访问自定义查询结果:
@body('Name_of_Execute_SQL_Query_step')?['resultsets']['Table1'][0]['NameOfYourColumn']
如果你找不到确切的"路径"对于您的数据,运行并让它失败。然后去检查失败的步骤,然后在"显示原始输出"您将能够看到执行SQL查询步骤的结果。例如:
{
"OutputParameters": {},
"ResultSets": {
"Table1": [
{
"Date": "2018-05-28T00:00:00"
}
]
}
}
要访问该日期,您当然需要使用:
@body('Name_of_Execute_SQL_Query_step')?['resultsets']['Table1'][0]['Date']
答案 1 :(得分:2)
由于多种原因,存储过程总是更好,并且连接器可以很好地推断出输出。这就是存储过程输出在设计器中亮起的原因。
执行SQL操作返回'无类型'内容,这就是您在设计器中看不到特定元素的原因。
要像存储过程输出那样使用Execute SQL输出,您必须自己定义JSON模式,并使用Parse JSON Action来点亮SQL输出。