【发布时间】:2020-04-20 14:49:27
【问题描述】:
选择 ...something... from ...somewhere... where condition1 和(如果更新则 condition2 elsif 删除则 condition3)。
这当然只是伪代码。有可能发表这样的声明吗?当我尝试时,它会在updating 下划线。我应该使用什么?案子?逻辑运算符?一切似乎都是被禁止的。这只是在触发器中开始之后。
CREATE OR REPLACE TRIGGER FIX_UPD_LIMITS
BEFORE UPDATE OR DELETE ON LIMITS
FOR EACH ROW
DECLARE
is_deleted_dependant VARCHAR2(1 BYTE);
is_editable_dependant VARCHAR2(1 BYTE);
BEGIN
SELECT IS_DELETE, IS_EDITABLE
INTO is_deleted_dependant, is_editable_dependant
FROM MAP_CALCULATION MC
INNER JOIN map_calculation_group MG ON MC.ID_CALC = MG.ID_CALC
WHERE MG.ID_CALC = MC.ID_CALC
AND ((UPDATING AND mg.id_group = :new.id_group)
OR (DELETING AND :old.id_group = mg.id_group)
);
IF UPDATING AND (is_editable_dependant = 'F' OR is_deleted_dependant = 'T') THEN
...
ELSIF DELETING AND (is_editable_dependant = 'F' OR is_deleted_dependant = 'T') THEN
...
END IF;
END;
/
【问题讨论】:
-
“select”语句如何更新?
-
向我们展示您的触发代码尝试。
-
已编辑,请看
-
PL/SQL 中完全灵活的动态 sql 是通过包
dbms_sql完成的。execute immediate命令在占位符方面具有一定的灵活性,但不如dbms_sql灵活。
标签: sql oracle plsql oracle11g where-clause