0

我有一个表“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 continue avg count current exists max min prior sql stddev sum variance execute forall merge time timestamp interval date pipe

如何修改此语句,以便我可以根据 '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 回答