Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 无法从Azure Logic Apps调用存储过程-可以';找不到参数的语法_Sql_Azure_Azure Logic Apps - Fatal编程技术网

Sql 无法从Azure Logic Apps调用存储过程-可以';找不到参数的语法

Sql 无法从Azure Logic Apps调用存储过程-可以';找不到参数的语法,sql,azure,azure-logic-apps,Sql,Azure,Azure Logic Apps,意向声明: 我正在尝试自动化工作流,定期将数据从Sharepoint中的CSV移动到Azure SQL数据库中的表中。我已经完成了1)格式化JSON数组,2)创建一个存储过程,成功获取JSON数组的文本,并将其导入到相应的表中 数组显示为: JSON=[{“col1”:“col1Data”,“col2”:“col2Data”,…},] SQL Management Studio中存储过程的调用如下所示: 执行SprocName@json=N' ==========================

意向声明:
我正在尝试自动化工作流,定期将数据从Sharepoint中的CSV移动到Azure SQL数据库中的表中。我已经完成了1)格式化JSON数组,2)创建一个存储过程,成功获取JSON数组的文本,并将其导入到相应的表中

数组显示为:
JSON=[{“col1”:“col1Data”,“col2”:“col2Data”,…},]

SQL Management Studio中存储过程的调用如下所示:
执行SprocName@json=N'

==========================================================
问题:
缺少文档,无法正确格式化以下两个SQL Connector参数之一,以将这两个语句链接在一起:

和都要求提供参数或查询文本,但没有说明所述参数的格式

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

“body”:“@json=N'+@string(输出('Convert_Rows\u To_json')。body)+”

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


我尝试了许多变体,无论是针对Execute存储过程上的@json参数,还是在executesql中简单地从整体构建查询,都没有效果。建议?

下面是从代码视图调用存储过程的示例,该过程的参数“from”采用日期时间值。在设计器中选择存储过程时,它应显示所有要填充的参数

    "Get_jobs": {
        "inputs": {
            "body": {
                "from": "@{convertFromUtc( variables('SelectTime'), variables('timeZone'), 'yyyy-MM-dd HH:mm:ss')}"
            },
            "host": {
                "connection": {
                    "name": "@parameters('$connections')['sql_2']['connectionId']"
                }
            },
            "method": "post",
            "path": "/datasets/default/procedures/@{encodeURIComponent(encodeURIComponent('[dbo].[GetJobs]'))}"
        },
        "runAfter": {
            "Refresh_data_for_BI": [
                "Succeeded"
            ]
        },
        "type": "ApiConnection"
    },

好的,我今天在其他任务之间时断时续地处理这个问题,最后厌倦了在“执行查询”的输入中完成它

暴力解决方案:我添加了另一个Javascript步骤,代码如下:

var input = workflowContext.actions.Convert_Rows_To_Json.outputs.body;

var sqlQuery = 'EXECUTE [ImportDomainCoverage] N\'' + input + '\'';

return sqlQuery;
这并不漂亮(再多走一步),但它确实有效


现在看看我是否可以充分修改内容以参数化表名,而不是每个表都需要六个步骤。

最终找到了语法。没有找到任何文档,只是尝试从一条错误消息转换到另一条错误消息

"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”元素的值。但是,要使其工作,还必须输入“headers”元素,我甚至没有在API调用中看到记录。由一条错误消息导致,该消息指出内容类型是纯文本,而它显然是json。

如果您只使用@body('Convert_Rows_to_json'),会怎么样?我通常从设计师那里挑选,所以不确定是否有正确的语法。只需从Convert_Rows_To_Json步骤中选择正文-这是一个Compose吗?Scott,它返回与输出相同的信息(“Convert_Rows_To_Json”)。Body.Scott,很遗憾,我没有“在设计器中选择存储过程”的选项。尝试下拉“存储过程名称”响应:无法检索值。无法在设计时计算参数“path.$.server”;它为空或具有运行时表达式。'