SQL存储过程使用游标时提示语法错误..
CREATE PROCEDURE ManageUser
AS
BEGIN
Create Login Qin with password='gl46@163.co';
Create user Qin from login Qin;
Declare @Name NVarchar(100)
Declare favCounts CURSOR
FOR select name from sysobjects where xtype='U'
Open favCounts
FETCH NEXT FROM favCounts into @Name
while @@FETCH_STATUS=0
Begin
if (@Name='tbl_Batch')
begin
Grant Update,select,delete,insert on tbl_Batch to Qin
end
else
begin
Grant Select on @Name to Qin
end
FETCH NEXT FROM favCounts into @Name
end
CLOSE favCounts
DEALLOCATE favCounts
END
提示:
消息 102,级别 15,状态 1,过程 ManageUser,第 21 行
'@Name' 附近有语法错误。
后一个grant语穗猛李句有问题,grant是不支持这种用变量保存的对象知羡名授予权限的。
可猜迟以用动态语句来实现
else
begin
Grant Select on @Name to Qin
end
这里改成
else
begin
declare @sql varchar(1000)
set @sql='Grant Select on '+ @Name +'to Qin'
execute (@sql)
end