SQL插入案例语句



我在内部插入物附近有一个语法问题。

错误消息:

不正确的语法"插入"

(并在评论部分中标记(。有人知道一种方法可以在案例语句中插入表格,然后选择示波器身份吗?

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而不是找到失败的语句,然后您可以根据该结果提出异常。

最新更新