Как передать значение json хранимой процедуре в node js - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть хранимая процедура, которая содержит один параметр «пользовательский тип таблицы» в Microsoft SQL Server. Я передаю «Таблицу данных» в качестве значения параметра хранимой процедуре в C#. Я хотел бы знать, как передать Json данные из node js как «Таблицу данных» в эту хранимую процедуру.

Определяемый пользователем тип таблицы:

CREATE TYPE [dbo].[TpUserRights] AS TABLE
                                    (
                                        [ConfigId] [int] NULL,
                                        [FormId] [int] NOT NULL
                                    )

Хранимая процедура:

CREATE PROCEDURE [dbo].[SpMergeUserRights] 
    (@UserRights TpUserRights ReadOnly) 
AS
BEGIN
    MERGE ModuleUserConfig AS [Target]
    USING @UserRights AS [Source] ON [Target].ConfigId = [Source].ConfigId

    WHEN NOT MATCHE BY TARGET
       THEN
           INSERT (ModuleId, FormId, UserId, CreatedBy) 
           VALUES (@ModuleId, [Source].FormId, @UserId, @CreatedBy) 

    WHEN MATCHED
       THEN 
           UPDATE 
           SET FormId = [Source].FormId,
               UserId = @UserId, 
               ModifiedDate = GETDATE(),
               ModifiedBy = @CreatedBy;
END

1 Ответ

0 голосов
/ 16 апреля 2020

Это просто в SQL Server 2016 и более поздних версиях. Просто передайте JSON в виде строки на SQL Сервер и проанализируйте его, чтобы загрузить TVP на сервер. См. Работа с JSON данными . А с JavaScript это лучший способ передать объемные данные на SQL Сервер.

В более старых SQL версиях сервера, для клиентов без поддержки табличных параметров вы можете использовать XML, загрузить временную таблицу или просто вызовите процедуру следующим образом:

declare @rights as TpUserRights

insert into @rights(ConfigId,FormId) 
values (@ConfigId,@FormId)

exec SpMergeUserRights @rights 

параметры привязки для @ConfigId и @FormId. И либо связывание дополнительных параметров для большего количества строк, либо вызов процедуры несколько раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...