为什么我的光标循环出现语法错误?

问题描述 投票:0回答:0

谁能解释为什么我在下面的 EXEC 语句中出现语法错误?如果我将 EXEC 更改为 PRINT,语法看起来很完美。

use BillingTracking

DECLARE @MyCursor CURSOR;
DECLARE @User varchar(100);
BEGIN
    SET @MyCursor = CURSOR FOR
    select SqlUser from dbo.tbl_Users order by SqlUser
    
    OPEN @MyCursor 
    FETCH NEXT FROM @MyCursor 
    INTO @USer

    WHILE @@FETCH_STATUS = 0
    BEGIN
        EXEC ('GRANT INSERT ON dbo.tbl_Audit TO ' + '[' + @User) + ']'
      FETCH NEXT FROM @MyCursor 
      INTO @User 
    END; 

    CLOSE @MyCursor ;
    DEALLOCATE @MyCursor;
END;

我得到的错误是: 消息 102,级别 15,状态 1,第 16 行 “+”附近的语法不正确。

我尝试在几个地方使用 quotename 函数,但我仍然得到错误。

sql syntax
© www.soinside.com 2019 - 2024. All rights reserved.