我有下面的json,其中可以有多辆车,每辆车可以包含多个行程.我需要插入车辆在TVHC
表,并为每辆车插入到TTRP表行程.
[
{
"VHC_VTY_CDE": "CAR",
"VHC_NAT_CDE": "USA",
"VHC_MAN_YEAR": "2020",
"VHC_PLT_NBR": "ABC123",
"VHC_PLT_NAT_CDE": "USA",
"VHC_STA_ID": "1",
"VHC_STA_CDE": "P",
"VHC_COL_CDE":"",
"Trips":[
{
"TRP_DTE":"2024-01-30",
"TRP_TIME":"12:00:00.0000000",
"TRP_BRD_CDE":"061",
"TRP_AIR_CDE":"QTR",
"TRP_SHP_CDE":"S12",
"TRP_FGT_NBR":"CargoXYZ",
"TRP_SHP_NBR":"S12"
},
{
"TRP_DTE":"2024-01-30",
"TRP_TIME":"12:00:00.0000000",
"TRP_BRD_CDE":"061",
"TRP_AIR_CDE":"QTR",
"TRP_SHP_CDE":"S12",
"TRP_FGT_NBR":"CargoXYZ",
"TRP_SHP_NBR":"S12"
}
]
}
]
我正在使用以下过程插入数据,但收到以下错误:
Msg 102, Level 15, State 1, Procedure Usama_Test, Line 81 [Batch Start Line 0]
Incorrect syntax near ')'
CREATE OR ALTER PROCEDURE [dbo].[insertVehicles]
@vehicles_trips_json NVARCHAR(MAX),
@TRV_ID AS BIGINT
AS
--BEGIN TRANSACTION
INSERT INTO TVHC
(
VHC_TRV_ID,
VHC_VTY_CDE,
VHC_NAT_CDE,
VHC_MAN_YEAR,
VHC_PLT_NBR,
VHC_PLT_NAT_CDE,
VHC_STY_ID,
VHC_STA_CDE,
VHC_COL_CDE
)
SELECT
@TRV_ID,
VHC_VTY_CDE,
VHC_NAT_CDE,
VHC_MAN_YEAR,
VHC_PLT_NBR,
VHC_PLT_NAT_CDE,
VHC_STY_ID,
VHC_STA_CDE,
VHC_COL_CDE
FROM
OPENJSON(@vehicles_trips_json)
WITH (
[VHC_VTY_CDE] char(3) N'$.VHC_VTY_CDE',
[VHC_NAT_CDE] char(3) N'$.VHC_NAT_CDE',
[VHC_MAN_YEAR] char(4) N'$.VHC_MAN_YEAR',
[VHC_PLT_NBR] varchar(20) N'$.VHC_PLT_NBR',
[VHC_PLT_NAT_CDE] char(3) N'$.VHC_PLT_NAT_CDE',
[VHC_STY_ID] int N'$.VHC_STY_ID',
[VHC_STA_CDE] int N'$.VHC_STA_CDE',
[VHC_COL_CDE] char(10) N'$.VHC_COL_CDE',
[Trips] nvarchar(max) N'$.Trips'
) AS ROOT_JSON
OUTER APPLY
(
INSERT INTO TTRP
(
TRP_DTE,
TRP_TIME,
TRP_VHC_ID,
TRP_BRD_CDE,
TRP_AIR_CDE,
TRP_SHP_CDE,
TRP_FGT_NBR,
TRP_SHP_NBR
)
SELECT
TRP_DTE,
TRP_TIME,
@@IDENTITY,
TRP_BRD_CDE,
TRP_AIR_CDE,
TRP_SHP_CDE,
TRP_FGT_NBR,
TRP_SHP_NBR
FROM
OPENJSON(ROOT_JSON.Trips)
WITH (
[TRP_DTE] date N'$.TRP_DTE',
[TRP_TIME] time(7) N'$.TRP_TIME',
[TRP_BRD_CDE] char(3) N'$.TRP_BRD_CDE',
[TRP_AIR_CDE] char(3) N'$.TRP_AIR_CDE',
[TRP_SHP_CDE] char(3) N'$.TRP_SHP_CDE',
[TRP_FGT_NBR] varchar(20) N'$.TRP_FGT_NBR',
[TRP_SHP_NBR] varchar(20) N'$.TRP_SHP_NBR'
)
)
--COMMIT TRANSACTION
有什么好主意吗?
这是一个语法错误,我try 了多种变体,但都不起作用.