我可以暂时禁用oracle存储过程中的触发器吗?
我可以暂时禁用oracle存储过程中的触发器吗 示例(伪代码): 您可以使用EXECUTE IMMEDIATE语法通过动态SQL发出DDL,例如“ALTER TRIGGER”语句 以下是对此的描述: 如果愿意,也可以使用VARCHAR变量构建动态SQL:我可以暂时禁用oracle存储过程中的触发器吗?,oracle,stored-procedures,triggers,Oracle,Stored Procedures,Triggers,我可以暂时禁用oracle存储过程中的触发器吗 示例(伪代码): 您可以使用EXECUTE IMMEDIATE语法通过动态SQL发出DDL,例如“ALTER TRIGGER”语句 以下是对此的描述: 如果愿意,也可以使用VARCHAR变量构建动态SQL: PROCEDURE myProcedure IS v_triggername VARCHAR2(30) := 'triggername'; BEGIN EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_t
PROCEDURE myProcedure
IS
v_triggername VARCHAR2(30) := 'triggername';
BEGIN
EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' DISABLE';
-- Do work
EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' ENABLE';
EXCEPTION
WHEN OTHERS
THEN
-- Handle Exceptions
END myProcedure;
如果您这样做,那么您还应该查看包DBMS_ASSERT以包装triggername并帮助强化代码以抵御SQL注入攻击。@giuseppe小心:Alter trigger is ddl->它进行提交。
PROCEDURE myProcedure
IS
BEGIN
EXECUTE IMMEDIATE 'ALTER TRIGGER triggername DISABLE';
-- Do work
EXECUTE IMMEDIATE 'ALTER TRIGGER triggername ENABLE';
EXCEPTION
WHEN OTHERS
THEN
-- Handle Exceptions
END myProcedure;
PROCEDURE myProcedure
IS
v_triggername VARCHAR2(30) := 'triggername';
BEGIN
EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' DISABLE';
-- Do work
EXECUTE IMMEDIATE 'ALTER TRIGGER '||v_triggername||' ENABLE';
EXCEPTION
WHEN OTHERS
THEN
-- Handle Exceptions
END myProcedure;