0

「名前」と「値」のフラグを含むテーブル「フラグ」があります。「名前」はフラグの名前で、「値」は「T」または「F」のいずれかです

次の方法で、「enable_feature」という名前のフラグに基づいてテーブルを更新したいと思います。

BEGIN;
IF ((SELECT flags.value FROM flags WHERE flags.name = 'enable_feature') = 'T')
UPDATE... SET...;
ELSE
UPDATE... SET...;
END IF;
END;

問題は IF 文にあるようです。具体的には、次のエラーが発生します。

PLS-00103: 次のいずれかを想定しているときに、記号"SELECT"が見つかりました:

( - + case mod new not null 継続 平均カウント 現在の存在 max min 以前の sql stddev 合計 分散 execute forall マージ時間 タイムスタンプ 間隔 日付パイプ

「enable_feature」の値に基づいて UPDATE/SET ステートメントを実行できるように、このステートメントを変更するにはどうすればよいですか (UPDATE/SET ステートメントは別のテーブルにあります)。

4

1 に答える 1

3
DECLARE
  v flags.value%type;
BEGIN
  SELECT flags.value into v FROM flags WHERE flags.name = 'enable_feature';
  IF v = 'T' THEN
    UPDATE... SET...;
  ELSE
    UPDATE... SET...;
  END IF;
END;
于 2013-09-30T16:19:08.677 に答える