質問

変数からデータベースを選択する方法はありますか?

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)
)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top