こんにちは、次の SQL を実行しようとしています。この SQL は、名前に「Pull」が含まれるすべてのデータベースを反復処理することにより、SourceDestination という名前のテーブル名を引き出します。
しかし、'+@db_name+'.sys.tables の近くのプラス記号でエラーが発生しています。両側で N '' を試しましたが、機能しないようです。
このエラー メッセージ 102、レベル 15、状態 1、行 20 「+」付近の構文が正しくありません。
どこが間違っているかを知る必要があります。助けてくれてありがとう。
declare db_names cursor for
select name
from master.sys.databases
where name like 'Pull_%'
declare @db_name varchar(50)
declare @table_name varchar(50)
declare @sql nvarchar(100)
DECLARE @ParmDefinition NVARCHAR(500);
open db_names
fetch next from db_names into @db_name
while @@FETCH_STATUS = 0
begin
print @db_name
-- set @sql = 'select '+@table_name+'=name from '+@db_name+'.sys.tables'
-- set @sql = N'select @table_name=name from @db_name.sys.tables where name = ''SourceDestinations'' '
execute sp_executesql N'select @tbl_name=name from '+@db_name+'.sys.tables where name = ''SourceDestinations'' ', N'@tbl_name varchar(50) OUTPUT', @tbl_name=@table_name OUTPUT
--exec(@sql)o
print @table_name
FETCH NEXT FROM db_names INTO @db_name
end
close db_names
deallocate db_names