У меня есть массив, который я преобразовал в Javascript, как показано ниже
[{PlanID:1},{PlanID:2},{PlanID:3}]
Я выполняю SP, как показано ниже
exec save_plan [{PlanID:1},{PlanID:2},{PlanID:3}]
Я пытаюсь сохранить каждый идентификатор плана как Каждая строка в таблице plan
, для которой я написал ниже SP, я зацикливаю массив и пытаюсь напечатать PlanID
(позже я напишу запрос INSERT вместо PRINT) внутри l oop.
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 идентификатора плана, вставляется только одна запись. Курсор не зацикливается более одного раза.