2016-11-10 110 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正确