変数からデータベースを選択する方法はありますか?
-
06-09-2019 - |
質問
変数からデータベースを選択する方法はありますか?
Declare @bob as varchar(50);
Set @bob = 'SweetDB';
GO
USE @bob
解決
残念ながら、ありません。
あなたは、動的SQLのようにあなたのバッチの残りの部分を実行することができない限ります。
動的SQLを実行するためにexecute
を使用すると、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
次に、これらの2つのクエリの結果はexecute
内で実行、選択まず、SweetDBで実行されるが、第二のではないので、(既にSweetDBにじゃないと仮定して)異なるであろう。
他のヒント
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)
)
所属していません StackOverflow