1

CASE ステートメントを使用して、更新するテーブルを決定したいのですが...

IE

IF (@existingStep = 1)
 BEGIN  
   UPDATE 
    CASE @tableToUpdate
      WHEN 'TemplateActionSettings' THEN TemplateActionSetting SET blah blah blah

    WHEN 'ETC' THEN --DO THIS ONE

 END

このように CASE を使用できますか?

4

5 に答える 5

4

代わりに IF を使用して、同様のものを取得できます

IF @TableToUpdate = 'Table1'
BEGIN
UPDATE U SET Col = 'Val' FROM Table1 AS U WHERE something = something
END
ELSE IF @TableToUpdate = 'Table2'
BEGIN
UPDATE U SET Col1 = 'Val' FROM Table2 AS U WHERE something = something
END
于 2012-04-18T14:45:03.463 に答える
2

いいえ、残念ながらこのように CASE を使用することはできません。

于 2012-04-18T14:34:39.250 に答える
2

いいえ、単純な SQL ステートメントでケースを使用することはできません。これを行うには、手続き型言語を使用する必要があります。RDMS を使用していると仮定します。

于 2012-04-18T14:35:56.643 に答える
1

動的クエリを使用しない限り、SQL でこれを行うことはできません (例: string concat の後に SQL サーバー スタイルで実行する)。各 DML ステートメントは、操作対象のオブジェクト (テーブルなど) を識別する必要があります。

于 2012-04-18T14:35:45.363 に答える
1

そのような複数のテーブルに対して更新ステートメントを実行することはできません。すべてのテーブルにまたがるビューを作成できず、更新も引き続き機能する場合を除きます。そのビューを作成できる場合は、ケースで更新を使用し、変更されていない場合はデータを元の値に戻します。そうでない場合は、 動的SQLを使用する必要があります

于 2012-04-18T14:35:48.957 に答える