SQL IF / ELSE语句

时间:2017-10-17 18:24:25

标签: sql if-statement

我很难理解为什么下面的SQL不起作用。我发表了一条评论(----------很高兴在这里),这是我解析/保存商店进行时SQL Server将接受代码的地方。

下面的一点,它不会。对SQL来说还是新手,所以任何帮助都会很棒。

我收到的错误是,关键字'ELSE'附近的语法不正确。 “ELSE”是我在上面提到的评论中的一个。

我还不明白的是,如果我改变IF和BEGIN轮次,SQL接受它(下面)?我认为ELSE IF是不可能的。

----------Fine up to Here
ELSE 
IF (@GrabTypeID = '')
    BEGIN


****************************************
Code below

**************************************
IF  (@GrabtypeID NOT IN (SELECT GRABTYPEID FROM Mytable) AND @GrabtypeID != '')     OR

(@Variable1 NOT IN (SELECT ID FROM Mytable) AND @Variable1 !='')                                                                            


BEGIN 
    SELECT @ErrorMessage ='The GrabTypeID or the ID is an invalid value'        
    RAISERROR (@ErrorMessage, 16, 1)

PRINT 'Invalid Parameters passed Through'

    RETURN
END 

ELSE 
    BEGIN 

IF (@GrabtypeID ! ='')


TRUNCATE TABLE Datatable1
TRUNCATE TABLE Datatable2

INSERT Datatable1
SELECT * FROM Referencetable1

INSERT Datatable2
SELECT * FROM REFERENCETABLE2

END

----------Fine up to Here

ELSE 
    BEGIN

IF (@GrabTypeID = '')


TRUNCATE TABLE Datatable1
TRUNCATE TABLE Datatable2

INSERT Datatable1 
SELECT * FROM REFERENCETABLE1 WHERE CATEGORY = 4

INSERT Datatable2 
SELECT * FROM REFERENCETABLE2 WHERE CATEGORY = 4

END 

GO

1 个答案:

答案 0 :(得分:2)

你的格式有点奇怪。你可以按照它的方式使它工作,但我认为最好使用这种格式:

IF expression
BEGIN
SELECT
END
ELSE IF expression
BEGIN
SELECT
END
ELSE IF expression
BEGIN
SELECT
END

具体来说,改变一下:

ELSE 
BEGIN 

IF (@GrabtypeID ! ='')

对此(两地):

ELSE IF (@GrabtypeID ! ='')
BEGIN