基本用法,server把数据库所有用户存储过程的EXEC权限赋另一角色

mssql server把数据库教程所有用户存储过程的EXEC权限赋另一角色

图片 1

$sql=create procedure sp_GrantProce(@username varchar(40)) as begin
declare @user varchar(20),@name varchar(40) declare t_cursor cursor
for select user_name(uid) as users,name from sysobjects where (xtype=
‘P ‘ or xtype= ‘X ‘) and status 0 open t_cursor fetch next from
t_cursor into @user,@name while @@fetch_status=0 begin exec( ‘grant
execute on ‘+@user+ ‘. ‘+@name+ ‘ to ‘+@username) fetch next from
t_cursor into @user,@name end close t_cursor deallocate t_cursor
end go;

 1 table1结构如下
 2 id    int
 3 name  varchar(50)
 4 
 5 declare @id int
 6 declare @name varchar(50)
 7 declare cursor1 cursor for         –定义游标cursor1
 8 select * from table1               –使用游标的对象(跟据需要填入select文)
 9 open cursor1                       –打开游标
10 
11 fetch next from cursor1 into @id,@name  –将游标向下移1行,获取的数据放入之前定义的变量@id,@name中
12 
13 while @@fetch_status=0           –判断是否成功获取数据
14 begin
15 update table1 set name=name+’1′
16 where id=@id                           –进行相应处理(跟据需要填入SQL文)
17 
18 fetch next from cursor1 into @id,@name  –将游标向下移1行
19 end
20 
21 close cursor1                   –关闭游标
22 deallocate cursor1 

图片 2

 

游标一般格式:
DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段3,… FROM 表名 WHERE

OPEN 游标名称
FETCH NEXT FROM 游标名称 INTO 变量名1,变量名2,变量名3,…
WHILE @@FETCH_STATUS=0
        BEGIN
                  SQL语句执行过程… …
                  FETCH NEXT
FROM 游标名称 INTO 变量名1,变量名2,变量名3,…
        END
CLOSE 游标名称
DEALLOCATE 游标名称 (删除游标)

发表评论

电子邮件地址不会被公开。 必填项已用*标注