我有一个表“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语句位于不同的表中)
答案 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;