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
这会引发错误:
Msg 102,Level 15,State 1,Line 117
';'附近的语法不正确。第156行,第15级,第1行,第126行 关键字'CLOSE'附近的语法不正确。
请告诉我什么是不正确的?我已经尝试了很多,但无法使它工作。 IF else语法有问题吗?我正在使用SQL Server。
我尝试了很多if else语法,但无法使其正常工作。
答案 0 :(得分:3)
IF (@useIPDTaskDeadline = 1)
BEGIN
PRINT 'Updates completed';
END
IF (@useIPDTaskDeadline = 0)
BEGIN
PRINT 'Updates completed';
END
如果您没有使用 BEGIN ,结束正确
,则会出现问题答案 1 :(得分:1)
您必须在END
阻止后删除IF
语句(或添加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