我在内部插入物附近有一个语法问题。
错误消息:
不正确的语法"插入"
(并在评论部分中标记(。有人知道一种方法可以在案例语句中插入表格,然后选择示波器身份吗?
INSERT
INTO dbo.WorkOrderMasterLabor ( WorkOrderMasterID , TaskID , ContractorLaborCraftID , EmployeeLaborCraftID , Sequence , ModifiedTimestamp , ModifiedUserName )
SELECT
(SELECT WorkOrderMasterID FROM WorkOrderMasters WHERE JobNumber = A.JOBNO),
NULL,
NULL,
CASE WHEN EXISTS(
SELECT 1
FROM dbo.EmployeeLaborCrafts
WHERE EmployeeID = (
SELECT EmployeeID
FROM Employees
WHERE EmployeeNumber = A.EMPLOYEENO
)
AND LaborCraftID = (
SELECT LaborCraftID
FROM LaborCrafts
WHERE LaborCraftCode = A.LABORCODE
)
)
THEN (
SELECT EmployeeLaborCraftID
FROM dbo.EmployeeLaborCrafts
WHERE EmployeeID = (
SELECT EmployeeID
FROM Employees
WHERE EmployeeNumber = A.EMPLOYEENO
)
AND LaborCraftID = (
SELECT LaborCraftID
FROM LaborCrafts
WHERE LaborCraftCode = A.LABORCODE
)
)
ELSE (
--syntax error at insert
INSERT
INTO dbo.EmployeeLaborCrafts ( EmployeeID , LaborCraftID , ModifiedTimestamp , ModifiedUserName )
SELECT *
FROM @PMMLABOR
SELECT SCOPE_IDENTITY()
)
END,
'',
GETDATE(),
N'Administrator'
FROM @PMMLABOR A
这是一个重写的版本
INSERT
INTO dbo.WorkOrderMasterLabor ( WorkOrderMasterID , TaskID , ContractorLaborCraftID , EmployeeLaborCraftID , Sequence , ModifiedTimestamp , ModifiedUserName )
SELECT
(SELECT WorkOrderMasterID FROM WorkOrderMasters WHERE JobNumber = A.JOBNO),
NULL,
NULL,
(
SELECT EmployeeLaborCraftID
FROM dbo.EmployeeLaborCrafts
WHERE EmployeeID = (
SELECT EmployeeID
FROM Employees
WHERE EmployeeNumber = A.EMPLOYEENO
)
AND LaborCraftID = (
SELECT LaborCraftID
FROM LaborCrafts
WHERE LaborCraftCode = A.LABORCODE
)
),
'',
GETDATE(),
N'Administrator'
FROM @PMMLABOR A
where EXISTS(
SELECT 1
FROM dbo.EmployeeLaborCrafts
WHERE EmployeeID = (
SELECT EmployeeID
FROM Employees
WHERE EmployeeNumber = A.EMPLOYEENO
)
AND LaborCraftID = (
SELECT LaborCraftID
FROM LaborCrafts
WHERE LaborCraftCode = A.LABORCODE
)
)
您可以运行相同的选择语句,进行NOT EXISTS
而不是找到失败的语句,然后您可以根据该结果提出异常。