基于flag的PL / SQL更新

时间:2013-09-30 16:07:13

标签: plsql

我有一个表“flags”,其中包含带有“name”和“value”的标志,其中“name”是标志的名称,“value”是“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继续avg count current   存在最大最小值之前sql stddev sum variance执行forall merge   时间戳间隔日期管道   

如何修改此语句,以便我可以根据'enable_feature'的值执行UPDATE / SET语句(UPDATE / SET语句位于不同的表中)

1 个答案:

答案 0 :(得分:2)

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;