Я пытаюсь написать хранимую процедуру, которая создает строку заголовка для таблицы деталей.
Я хочу вставить идентификатор непосредственно в таблицу строк заголовка, и я хочу использовать поле 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
Неверное имя столбца «Имя пользователя».
Что я делаю не так?