2017-10-17 144 views
0

我在努力理解爲什麼下面的SQL不起作用。我已經提出了一個註釋(---------- Fine到這裏),這是SQL Server在解析/保存Store過程時接受代碼的地方。SQL IF/ELSE聲明

下面的那一點,它不會採取。還是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

您在IF關鍵字後缺少BEGIN標記。 – Stavr00

回答

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