首页 > 解决方案 > 无法从 Azure 逻辑应用调用 SPROC - 找不到参数的语法

问题描述

意向声明:
我正在尝试自动化工作流,定期将数据从 Sharepoint 中的 CSV 移动到 Azure SQL 数据库中的表中。到目前为止,我已经做到了 1)格式化 JSON 数组,以及 2)创建一个成功获取 JSON 数组文本的 SPROC,并将其导入到适当的表中。

数组看起来像: JSON = [{"col1":"col1Data","col2":"col2Data", ...}, <600-some more iterations>]

SQL Management Studio 中存储过程的调用如下所示: EXECUTE SprocName @json=N'<text of JSON above>'

============================================
问题:
缺乏允许我的文件正确格式化以下两个 SQL 连接器的参数之一,以将这两个语句链接在一起:

执行查询 (v2)执行存储过程 (v2)都要求提供参数或查询文本,但没有说明应如何格式化所述参数。

例如,在执行带有单个参数@json 的存储过程时,以下文本“看起来”正确,但会导致错误:

"body": "@json=N'+@string(outputs('Convert_Rows_To_Json').body)+'"

错误:无法保存逻辑应用 UpdateDomainCoverage。模板验证失败:'1' 行和 '3148' 列的模板操作 'Execute_stored_procedure_(V2)' 无效:“模板语言表达式 'json=N'+@string(outputs('Convert_Rows_To_Json')。 body)+'' 无效:不应出现位置 '4' 处的字符串字符 '='。".'。

我已经尝试了许多变体,对于 Execute Stored Procedure 上的 @json 参数,或者只是在 Execute SQL 中从整体构建查询,但无济于事。建议?

标签: sqlazureazure-logic-apps

解决方案


终于弄明白了语法。没有找到任何文档,只是尝试从一条错误消息到另一条错误消息。

"Pump_data_into_target_table": {
                "inputs": {
                    "body": {
                        "json": "@{body('Pull_FeedbackItems_from_source').ResultSets['Table1']}"
                    },
                    "headers": {
                        "Content-Type": "application/json"
                    },
                    "host": {
                        "connection": {
                            "name": "@parameters('$connections')['sql_2']['connectionId']"
                        }
                    },
                    "method": "post",
                    "path": "/v2/datasets/@{encodeURIComponent(encodeURIComponent('servername.database.windows.net'))},@{encodeURIComponent(encodeURIComponent('dbname'))}/procedures/@{encodeURIComponent(encodeURIComponent('sprocname'))}"
                },
                "runAfter": {
                    "Pull_FeedbackItems_from_Source": [
                        "Succeeded"
                    ]
                },
                "type": "ApiConnection"
            }

我的问题的基本答案是:将参数/值对作为 JSON 对象提供。请参阅上面清单中“body”元素的值。但是,要使其工作,还必须输入“标题”元素,我什至没有在 API 调用中看到记录。是由一条错误消息导致的,该消息指出内容类型是纯文本,而它显然是 json。


推荐阅读