私はネストされたカーソルに奇妙な問題があり、それが何であるか分かりません。SQL Serverのネストされたカーソルの問題
付近に正しくない構文 '@str':
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
それは私に次のエラーメッセージを表示します。
は、ここに私のT-SQLコードです。 [SQLSTATE 42000](エラー102)
問題は、opendatasource関数のパラメータとして変数を指定しているようです。しかし、なぜ?そして、この問題を避ける方法は?
*ネストされたカーソル*:それは右そこにあなたの問題です! –
@marc_s私は、ネストされたカーソルは、OPがしたいことを実行する唯一の実行可能な方法だと考えています(サーバーのコレクション内のすべてのデータベースをループします、名前はテーブルに含まれています) –