sql - 无法从 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 中从整体构建查询,但无济于事。建议?
解决方案
终于弄明白了语法。没有找到任何文档,只是尝试从一条错误消息到另一条错误消息。
"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。
推荐阅读
- c++ - 在 Qt pro 文件中定义一个布尔值
- python - 是否可以使用 Tensorflow 2.x 高级 API 在 Tensorflow 1.x 训练的模型上运行推理
- json - Parsehub 网站元素仅在特定日期显示
- python - 发布表单已更改以查看
- r - ggtext:element_markdown 不适用于 position = "top"
- react-native - React Native CountdownCircleTimer 每秒重新渲染组件
- c# - 如何在赋值之前保留参考
- python - osx上的pytorch(仅限cpu)失败,找不到符号
- python - 如何制作一个自动更新python结果的画布文本?
- regex - 匹配除开头重复字母外的所有内容