就业数据资源平台
当前位置:首页 > 数据库技术
2012年计算机三级数据库技术SQL语句辅导:技巧篇(3)

 9、存储更改全部表

  CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch


  @OldOwner as NVARCHAR(128),


  @NewOwner as NVARCHAR(128)


  AS


  DECLARE @Name as NVARCHAR(128)


  DECLARE @Owner as NVARCHAR(128)


  DECLARE @OwnerName as NVARCHAR(128)


  DECLARE curObject CURSOR FOR


  select 'Name' = name,


  'Owner' = user_name(uid)


  from sysobjects


  where user_name(uid)=@OldOwner


  order by name


  OPEN curObject


  FETCH NEXT FROM curObject INTO @Name, @Owner


  WHILE(@@FETCH_STATUS=0)


  BEGIN


  if @Owner=@OldOwner


  begin


  set @OwnerName = @OldOwner + '.' + rtrim(@Name)


  exec sp_changeobjectowner @OwnerName, @NewOwner


  end


  -- select @name,@NewOwner,@OldOwner


  FETCH NEXT FROM curObject INTO @Name, @Owner


  END


  close curObject


  deallocate curObject


  GO


  10、SQL SERVER中直接循环写入数据


  declare @i int


  set @i=1


  while @i<30


  begin


  insert into test (userid) values(@i)


  set @i=@i+1


  end


  案例:


  有如下表,要求就裱中所有没有及格的成绩,在每次增长0.1的基础上,使他们刚好及格:


  Name score


  Zhangshan 80


  Lishi 59


  Wangwu 50


  Songquan 69


  while((select min(score) from tb_table)<60)


  begin


  update tb_table set score =score*1.01


  where score<60


  if (select min(score) from tb_table)>60


  break


  else


  continue


  end

就业数据资源平台