【发布时间】:2021-12-07 22:17:49
【问题描述】:
我正在尝试在 SQL Server 2016 中编写查询,其中我:
- 遍历一系列行
- 将结果读入变量
- 从这些变量创建 JSON 对象以存储在我的数据库中
这是我目前拥有的代码的基本示例
DECLARE
@test1 int,
@test2 varchar(255)
DECLARE db_update_cursor CURSOR FOR
SELECT test1, test2
FROM sourceTable
OPEN db_update_cursor
FETCH NEXT FROM db_update_cursor INTO @test1, @test2
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO destinationTable(testRow)
VALUES (SELECT @test1, @test2 FOR JSON AUTO)
FETCH NEXT FROM db_update_cursor INTO @test1, @test2
END
CLOSE db_update_cursor
DEALLOCATE db_update_cursor
由此,我希望得到一个看起来像这样的 Json 对象:
[
{
"test1": 5,
"test2": "something"
}
]
当我尝试运行此程序时,我收到错误消息:“FOR JSON AUTO 需要至少一个表来生成 JSON 对象。使用 FOR JSON PATH 或添加带有表名的 FROM 子句。”
实施此工作流程的最佳方式是什么?
【问题讨论】:
-
您发布的 SQL 甚至无法编译。请发布测试表的整个架构。看起来您的示例可能不是 100% 1-1 的真实代码。我的猜测是您正在尝试更新 testtable,将 testRow 设置为同一行中其他字段的 json?
-
抱歉,这应该是两个不同的表,我已经更新了帖子以反映这一点
-
我认为,添加示例数据是合适的。
标签: sql json sql-server