我有一個奇怪的問題,我的嵌套遊標,我不知道它是什麼。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