2011-03-02 13 views

答えて

4

あなたがそれを行うことができ、2つの方法があります

  1. は、複数のクエリ(各テーブルに1つ)を書く、そしてその後、パラメータ値
  2. 使用、動的SQL

に基づいて切り替えますあなたはこのような何かをしたい、2の場合

if @param = 'value' 
    select Col1, Col2 from Table1 
else 
    select Col1, Col2 from Table2 

:1の場合、あなたはこのような何かをしたいです:

declare @sql nvarchar(4000) 

select @sql = 'select Col1, Col2 from' + (case when @param = 'value' then 'Table1' else 'Table2' end) 

sp_executesql @sql 

WARNING:オプション1が実行可能である場合は、オプション2の非常に注意してください、それはより安全なオプションです、として動的にユーザーが指定する値に基づいてSQLを構築することは、常に危険な事件です。この特定の例ではSQLで直接パラメータを使用していませんが、何かを書くのは非常に簡単なので、それを悪用する方法を見つけるのは非常に簡単です。

関連する問題