Visual Studio中SqlCommand中的合并命令

问题描述 投票:-1回答:1

我打算用Visual Studio编写merge语句,但出现错误

输出附近语法不正确

我该如何解决?

我试图在`sqlCommando对象中编写SQL查询,但出现错误。

MERGE INTO dbo.EMPLOYEE as t
USING dbo.CT_EMPLOYEES as s t.EMPLOYEE_ID = s.EMPLOYEE_ID

WHEN MATCHED THEN
    UPDATE SET t.EMAIL = s.EMAIL, 
            t.GID = s.GID,
            t.SAP_COMPANY_CODE = s.SAP_COMPANY_CODE ,
            t.FIRST_NAME = s.FIRST_NAME ,
            t.LAST_NAME = s.LAST_NAME ,
            t.COST_CENTER = s.COST_CENTER,
            t.MANAGER_EMPLOYEE_ID =s.MANAGER_EMPLOYEE_ID,
            t.SCD_DEPT=s.SCD_DEPT,
            t.LEAVE_DATE = s.LEAVE_DATE,
            t.START_DATE = s.START_DATE ,
            t.CONTRACT_TYPE = s.CONTRACT_TYPE ,
            t.WEEKLY_WORKING__HOUR = s.WEEKLY_WORKING__HOUR ,
            t.STATUS=s.STATUS,
            t.LAST_UPDATE_TIME = s.LAST_UPDATE_TIME 

WHEN NOT MATCHED BY TARGET THEN
    INSERT(EMPLOYEE_ID, EMAIL, GID, SAP_COMPANY_CODE, FIRST_NAME, LAST_NAME, COST_CENTER, MANAGER_EMPLOYEE_ID, SCD_DEPT, LEAVE_DATE, START_DATE, CONTRACT_TYPE, WEEKLY_WORKING__HOUR, STATUS, LAST_UPDATE_TIME)
    VALUES(s.EMPLOYEE_ID, s.EMAIL, s.GID, s.SAP_COMPANY_CODE, s.FIRST_NAME, s.LAST_NAME, s.COST_CENTER, s.MANAGER_EMPLOYEE_ID, s.SCD_DEPT, s.LEAVE_DATE, s.START_DATE, s.CONTRACT_TYPE, s.WEEKLY_WORKING__HOUR, s.STATUS, s.LAST_UPDATE_TIME)

OUTPUT $action as Work, inserted.EMPLOYEE_ID, inserted.EMAIL, inserted.GID, inserted.SAP_COMPANY_CODE, inserted.FIRST_NAME, inserted.LAST_NAME, inserted.COST_CENTER, inserted.MANAGER_EMPLOYEE_ID, inserted.SCD_DEPT, inserted.LEAVE_DATE, inserted.START_DATE, inserted.CONTRACT_TYPE, inserted.WEEKLY_WORKING__HOUR,inserted.STATUS,inserted.LAST_UPDATE_TIME;

我收到有关的错误

输出附近语法不正确

如何解决?

sql sql-server merge
1个回答
0
投票

您缺少合并谓词中的ON。代替

MERGE INTO dbo.EMPLOYEE as t
USING dbo.CT_EMPLOYEES as s t.EMPLOYEE_ID = s.EMPLOYEE_ID
WHEN MATCHED THEN
....

应该是

MERGE INTO dbo.EMPLOYEE as t
USING dbo.CT_EMPLOYEES as s ON t.EMPLOYEE_ID = s.EMPLOYEE_ID
WHEN MATCHED THEN   
© www.soinside.com 2019 - 2024. All rights reserved.