sqlserver 游标的实现

  1. alter PROCEDURE [dbo].[sp_copyTables]   
  2. @sqlWhere varchar(100),  
  3. @newDBName  varchar(50)  
  4. as  
  5. begin  
  6. declare @sql nvarchar(500),@insert varchar(1000), @tableName varchar(50)  
  7.    
  8. –定义游标  
  9. set @sql=‘declare getTablesNames cursor for select Name from sysobjects where  XType=’‘U’‘ and ‘+@sqlWhere   
  10. –执行游标   
  11.  exec (@sql)     
  12. –打开  
  13. open getTablesNames     
  14. –取第一个数  
  15. fetch next from getTablesNames into @tableName  
  16. –遍历游标  
  17. while @@fetch_status <> -1  
  18. begin  
  19. set @insert=‘insert into ‘+@newDBName+‘.dbo.’+@tableName+‘ select *  from ‘+@tableName  
  20. print @insert  
  21. –exec(@insert)  
  22. fetch next from getTablesNames into @tableName  
  23. end  
  24. –关闭游标  
  25. close getTablesNames  
  26. –回收游标  
  27. deallocate getTablesNames  
  28. end  

执行存储过程

exec [sp_copyTables] ‘Name not in (”dtproperties”,”oSensorData”,”oSands”)’, ‘jarlinfowkk2013’

参数中间要用两个单引号来表示’

标签