我有一个数组,我用javascript将其字符串化如下
[{PlanID:1},{PlanID:2},{PlanID:3}]
我正在执行以下sp
exec save_plan [{PlanID:1},{PlanID:2},{PlanID:3}]
我正在尝试将每个计划id保存为表中的每一行 plan
,为此我编写了下面的sp,我正在循环数组并尝试打印 PlanID
(稍后我将编写insert查询来代替print)在循环中。
USE [XYZ]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure save_plan
@packages nvarchar(max)
AS
DECLARE
@PlanID_FETCHED INT
BEGIN
DECLARE C CURSOR LOCAL FOR
SELECT PlanID
FROM OPENJSON ( @packages )
WITH (
PlanID INT '$.PlanID'
)
OPEN C
FETCH NEXT FROM C INTO @PlanID_FETCHED
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @PlanID_FETCHED
FETCH NEXT FROM C INTO @PlanID_FETCHED
END
CLOSE C
DEALLOCATE C
end;
即使数组中有3个计划id,也只插入一条记录。游标循环次数不超过一次。
1条答案
按热度按时间ozxc1zmp1#
解析json时出现问题。如果我们按下面的方式调用proc,它可以正常工作。
请在这里找到小提琴。