$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

declare @name varchar(8000)
declare cursor_a cursor for select  name from sysobjects  where
xtype=’U’
open  cursor_a
fetch next from cursor_a into @name
while @@fetch_status=0
begin 
  exec(‘delete from  ‘+@name)
  fetch next  from cursor_a into @name
end
close cursor_a
deallocate cursor_a

mssql server把数据库教程全体用户存储进程的EXEC权限赋另一剧中人物

select 3,121,’t’ 

declare @deptid int,@username varchar(20)
–定义游标
declare Select_cursor cursor for
        select deptid,username from #Temp1
open Select_cursor
fetch next from Select_cursor into @deptid,@username    –提取操作的列数据放到局地变量中
while @@fetch_status=0      –再次回到被 FETCH 语句施行的末尾游标的情景
/*
@@FETCH_STATUS =0          FETCH 语句成功
@@FETCH_STATUS =-1 FETCH 语句失利或此行不在结果聚焦
@@FETCH_STATUS =-2 被提取的行空中楼阁
*/
        begin
                  –当表#Temp2列deptid存在同样的多寡时,就一向在列username上扩大@username值
                  if(exists(select * from #Temp2 where deptid=@deptid )) 
                          update #Temp2 set username=username +@username where deptid=@deptid
                  else 
                  –插入新数据
                          insert into #Temp2 select @deptid,@username
                  fetch next from Select_cursor into @deptid,@username
        end
close Select_cursor      
deallocate Select_cursor
select * from #Temp2 –测量检验结果
Drop table #Temp1,#Temp2

例子:
/*
成效:数据库表格tbl_users数据
deptid userid username
1          100      a
1      101      b
2      102      c
必要用叁个sql语句输出上边结果
deptid username
1        ab
2        c
[需求用游标落成规划: OK_008
时间: 2006-05
备注:无
*/
create table #Temp1(deptid int,userid int,username varchar(20卡塔尔卡塔尔 –待测量检验的数据表
create table #Temp2(deptid int,username varchar(20))                –结果表
–先把某些待测量检验的数额插入到待测量检验表#Temp1中
insert into #Temp1
select 1,100,’a’ union all
select 1,101,’b’ union all
select 1,131,’d’ union all
select 1,201,’f’ union all
select 2,302,’c’ union all 
select 2,202,’a’ union all
select 2,221,’e’ union all
select 3,102,’y’ union all 
select 3,302,’e’ union all

相关文章