我有一个奇怪的问题,我的嵌套游标,我不知道它是什么。SQL Server嵌套游标问题
这里是我的T-SQL代码:
declare @dbname varchar(50)
declare @servername varchar(50)
declare srv cursor for select servername from test.dbo.servers
declare @str varchar(200)
truncate table test.dbo.temp
open srv
fetch next from srv into @servername
while @@fetch_status = 0
begin
set @str = 'Data Source='[email protected]+';Integrated Security=SSPI'
declare db cursor for select name from opendatasource('SQLNCLI', @str).master.dbo.sysdatabases
open db
fetch next from db into @dbname
while @@fetch_status = 0
begin
insert test.dbo.temp (dbname, servername) values (@dbname, @servername)
fetch next from db into @dbname
end
fetch next from srv into @servername
close db
deallocate db
end
close srv
deallocate srv
它给了我一个错误信息:
附近有语法错误@str“。 [SQLSTATE 42000](Error 102)
看起来问题在于将变量作为参数赋予opendatasource函数。但为什么?以及如何避免这个问题?
*嵌套游标*:这是你的问题就在那里! – 2010-12-08 12:27:43
@marc_s我认为嵌套游标是做OP的唯一可行的方法(循环遍历服务器集合中的所有数据库,其名称包含在表中) – 2010-12-08 14:06:46