2016-11-10 105 views
0
DECLARE @abc varchar(MAX); 
DECLARE @useIPDTaskDeadline INT = 1; 

DECLARE TOCREATETASKCURSOR CURSOR FOR  
     WITH TOTALTASK AS (
      SELECT abc FROM table1 
     ) 
     SELECT abc FROM TOTALTASK 

FOR READ ONLY 

OPEN TOCREATETASKCURSOR 
FETCH TOCREATETASKCURSOR INTO @abc 

WHILE @@FETCH_STATUS = 0 
BEGIN -- @@FETCH_STATUS = 0 
    PRINT '' 

    BEGIN TRANSACTION; 

    IF (@useIPDTaskDeadline = 1) 
     PRINT 'Updates completed'; 
END 

IF (@useIPDTaskDeadline = 0) 
    PRINT 'Updates completed'; 
END; 

COMMIT TRANSACTION; 

    FETCH TOCREATETASKCURSOR INTO @abc 
END -- @@FETCH_STATUS = 0 

CLOSE TOCREATETASKCURSOR 
DEALLOCATE TOCREATETASKCURSOR 

這引發錯誤:請幫助解決這個遊標SQL

消息102,級別15,狀態1,行117
附近有語法錯誤 ';'。

Msg 156,Level 15,State 1,Line 126
關鍵字'CLOSE'附近的語法不正確。

請告訴我什麼是不正確的?我嘗試了很多,但無法使其工作。 IF else語法有問題嗎?我正在使用SQL Server。

我已經嘗試了許多的if else語法,但不能使它工作。

回答

1

你有你的IF塊後刪除END報表(或添加BEGIN語句):

IF (@useIPDTaskDeadline = 1) 
    PRINT 'Updates completed'; 
IF (@useIPDTaskDeadline = 0) 
    PRINT 'Updates completed'; 

IF (@useIPDTaskDeadline = 1) 
BEGIN 
    PRINT 'Updates completed'; 
END 
IF (@useIPDTaskDeadline = 0) 
BEGIN 
    PRINT 'Updates completed'; 
END 
+0

這是工作。感謝幫助。 :) – Aiden

3
IF (@useIPDTaskDeadline = 1) 
BEGIN 
    PRINT 'Updates completed'; 
END 
IF (@useIPDTaskDeadline = 0) 
BEGIN 
PRINT 'Updates completed'; 
END 

問題是你的,如果你不使用BEGINEND正確