Как назначить значение JSON для переменной в TSQL? - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь написать хранимую процедуру, которая создает строку заголовка для таблицы деталей.

Я хочу вставить идентификатор непосредственно в таблицу строк заголовка, и я хочу использовать поле UserName из объекта JSON, чтобы найти UserID для вставки в таблицу строк заголовка.

Я не могу понять, как назначить значения JSON переменным.

Вот мой сценарий:

DECLARE @Json NVARCHAR(MAX) = '{

            "Id":1,
            "SerialNumber":425,
            "Model":"T8X",
            "UserName":"BRASKYB",
            "EquipmentParts" : {
                    "WWECode": "21-21-0100"
            ,       "WWEDescription": "GERMAN SUPLEX"
            ,       "BFE": "101HD"
            ,       "Manufacturer": "THE PAWN SHOP"
            ,       "ManufacturerCode": "U69420"
            ,       "PartNumber": "867530-9"
            ,       "SerialNumber": "420"
            ,       "Amendment": ""
            ,       "Remarks": ""

            }
        }
        '
DECLARE @VehicleID          INT;
DECLARE @LoadedOn           DATE = GETDATE();       
DECLARE @LoadedBy           INT ;
DECLARE @UserName           VARCHAR(50);



SELECT
    Id
,   UserName
FROM   
    OPENJSON (@json)
WITH
(
    Id INT
,   UserName NVARCHAR(50)
) 


SELECT  @VehicleID = json.ID
SELECT  @UserName = json.UserName


SELECT UserID = @Loadedby FROM master.[User] a WHERE a.UserName = @UserName

INSERT INTO 
    SERVER.SCHEMA.HeaderTable(
        VehicleId
    ,   LoadedOn
    ,   LoadedBy
    )
VALUES
    (
        @VehicleID
    ,   @LoadedOn
    ,   @LoadedBy
    )

Я получаю следующую ошибку при попытке запустить этот скрипт:

Сообщение 207, Уровень 16, Состояние 1, Строка 41

Неверное имя столбца 'id'.

Сообщение 207, Уровень 16, Состояние 1, Строка 43

Неверное имя столбца «Имя пользователя».

Что я делаю не так?

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете назначить переменную следующим образом

SELECT
   @VehicleID = Id
,  @UserName = UserName
FROM   
    OPENJSON (@json)
WITH
(
    Id INT
,   UserName NVARCHAR(50)
) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...