1

別のデータベースのテーブルと結合する必要がありますが、その名前がわかりません。プロシージャ パラメーターからのみ取得します。だから私はこのようなことをしたい:

select * from [DB1].dbo.[Table1] t1 
inner join [@DBName].dbo.[Table2] t2 on t1.ID = t2.ID and t1.status = @status;

あるいは

select * from [DB1].dbo.[Table1] t1 
inner join [@DBNameAndTableName] t2 on t1.ID = t2.ID and t1.status = @status;

それはまったく可能ですか?または、文字列スクリプトと を使用する必要があり EXECUTE(@SQL_SCRIPT)ますか?

4

1 に答える 1

4

これを試してみてください -

クエリ:

DECLARE 
      @db_name NVARCHAR(150) = 'DB2'
    , @status INT = 0

DECLARE @SQL NVARCHAR(MAX) = '
SELECT *
FROM [DB1].[dbo].[table1] t1 
JOIN [' + @db_name +'].[dbo].[table1] t2 ON t1.ID = t2.ID 
WHERE t1.status = ' + CAST(@status AS VARCHAR(5))

PRINT @SQL
EXEC sys.sp_executesql @SQL

出力:

SELECT *
FROM [DB1].[dbo].[table1] t1 
JOIN [DB2].[dbo].[table1] t2 ON t1.ID = t2.ID 
WHERE t1.status = 0
于 2013-05-20T10:33:47.797 に答える