変数を使用したSQLのuseステートメント 質問する

変数を使用したSQLのuseステートメント 質問する

SQL ステートメントを使用して現在のデータベースを切り替えようとしています。次のことを試しましたが、すべて失敗しました。

-- 1
USE @DatabaseName
-- 2
EXEC sp_sqlexec @Sql -- where @Sql = 'USE [' + @DatabaseName + ']'

もう少し詳細を追加します。

編集: 変数が設定されている 2 つの別々のデータベースでいくつかの操作を実行したいと思います。次のようになります。

USE Database1
SELECT * FROM Table1

USE Database2
SELECT * FROM Table2

ベストアンサー1

前者の問題は、 .USE 'myDB'ではなくUSE myDB、文字列を渡しているのに、 USE が明示的な参照を探していることです。

後者の例は私にとっては有効です。

DECLARE @sql varchar(20)
SELECT @sql = 'USE myDb'
EXEC sp_sqlexec @Sql

-- Also works
SELECT @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql

おすすめ記事