2012-03-19 24 views
0

私は1台のサーバーに2 dbを持っています。 @db変数に基づいて選択するプロシージャを記述する必要があります。SQL Serverをケースdbから選択

私は、このための2つの可能性を知っている:私は@SQL nvarchar(max)を宣言し、プレーンテキストで私のクエリを生成

  1. を。それから私はexec @SQLをやる。 Bad variant imho。

  2. 私は2つの同様のクエリを行い、@ db = '' 1番目のクエリelseクエリ2番目のクエリを使用します。それはコードが重複しているので、別の悪い変形です。

質問がありますか?このようにする方法はありますか?select * from @ db.dbo.table?

+0

シノニムを見たいかもしれませんが、ミッドバッチを1つ作成できるかどうかはわかりません。 http://msdn.microsoft.com/en-us/library/ms177544.aspx –

+0

データベースを含むテーブル名は、動的SQLを使用せずに変数で指定することはできません。唯一の他の選択肢は、ユーザーに値を入力し、ユーザーの入力に基づいて値をハードコードしたスクリプトを生成することです。 –

答えて

0

「exec @SQL」を使用するのは悪くないです。仕事が完了し、セキュリティ上のリスクにさらされていなければ、それは最善の方法かもしれません。もう1つの選択肢は、C#のような実際のプログラミング言語(またはあなたの好みが何であれ)を使うことを検討することです。

+0

私は悪ではないが、テストするのは難しいことを知っている。 – StNickolas

関連する問題