我有一个数组,我在 Javascript 中将其字符串化,如下所示
[{PlanID:1},{PlanID:2},{PlanID:3}]
我正在执行 SP 如下
exec save_plan [{PlanID:1},{PlanID:2},{PlanID:3}]
我正在尝试将每个计划 ID 保存为 table 中的每一行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,也只有一条记录被插入。光标不会多次循环。