我的IF/ELSE有什么问题?"ELSE:'ELSE'附近的语法不正确."

4 sql-server ssis

我有类似这样的代码:

DECLARE @IdentificationNumber INT
DECLARE @Foreign_ID BIGINT

IF ((SELECT COUNT(*) FROM [main-table] WHERE [identification-number] = @IdentificationNumber) > 0)

    SET @Foreign_ID = (SELECT [Foreign_ID] FROM [main-table] WHERE [identification-number] = @IdentificationNumber) 

    BEGIN
        UPDATE [main-table]
        SET [column1] = '', [column2] = '', [column3] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END

    BEGIN
        UPDATE [table2]
        SET [column4] = '', [column5] = '', [column6] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END

    BEGIN
        UPDATE [table3] 
        SET [column7] = '', [column8] = '', [column9] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END
    -- and so on, up to 14

ELSE -- "Incorrect syntax near 'ELSE'.

    BEGIN
        INSERT into ... -- blah blah blah. 
    END
Run Code Online (Sandbox Code Playgroud)

...但我在尝试使用时遇到错误ELSE:Incorrect syntax near 'ELSE'.

Pரத*_*ீப் 13

IF - Else 语法是

If condition
begin
--statement
end
else 
begin
--statement
end
Run Code Online (Sandbox Code Playgroud)

在你的查询之后,首先IF statementBegin - End需要将所有那些语句包含在一个语句中Begin - End.喜欢

IF ((SELECT COUNT(*) FROM [main-table] WHERE [identification-number] = @IdentificationNumber) > 0)
Begin -- Missing
    SET @Foreign_ID = (SELECT [Foreign_ID] FROM [main-table] WHERE [identification-number] = @IdentificationNumber) 

    BEGIN
        UPDATE [main-table]
        SET [column1] = '', [column2] = '', [column3] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END

    BEGIN
        UPDATE [table2]
        SET [column4] = '', [column5] = '', [column6] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END

    BEGIN
        UPDATE [table3] 
        SET [column7] = '', [column8] = '', [column9] = ''
        WHERE [Foreign_ID] = @Foreign_ID
    END
END -- Missing
else
....
Run Code Online (Sandbox Code Playgroud)