変数からデータベースを選択する方法はありますか?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
変数からデータベースを選択する方法はありますか?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
残念だけど違う。
残りのバッチを動的 SQL として実行できない場合を除きます。
を使用execute
して SQL を動的に実行すると、execute
ステートメントのスコープのコンテキストが変更されますが、ステートメントを実行するスコープに永続的な影響は残りませんexecute
。
言い換えれば、これは:
DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db)
現在のデータベースを永続的に設定するわけではありませんが、上記のコードを次のように変更した場合:
DECLARE @db VARCHAR(100)
SET @db = 'SweetDB'
EXECUTE('use ' + @db + ';select * from sysobjects')
select * from sysobjects
内部で実行された最初の選択はSweetDBで実行されているが、2番目はそうではないため、これら2つのクエリの結果は異なります(まだSweetDBにいないと仮定します)execute
。
declare @NewDB varchar(50)
set @NewDB = 'NewDB'
execute('use ' + @NewDB)
#TempTables は GO 間で保持されます
最初のバッチでテーブルを作成し、そのバッチまたは後続のバッチで必要に応じてデータを挿入/選択できます。
構文の例を次に示します。
CREATE TABLE #YourTableName
(
col1 int not null primary key identity(1,1)
,col2 varchar(10)
)