最近,我部署了Oracle WareHouse Builder(OWB)映射。在我现在正在工作的场景中,在事件表上发生Update语句(使用WriteBack值)之后,需要通过触发器触发此映射(ETL过程)。
当映射作为包部署到目标模式时,触发器必须调用OWB为包创建的主过程。起初我并不知道如何完成这项任务,但SQL Developer给了我一个提示:
所以,我把这个代码放在我的触发器中。像这样:
CREATE OR REPLACE TRIGGER RESPALDO_HISTORIAL
AFTER UPDATE ON MONITOR_FT_TAB
FOR EACH ROW
DECLARE
P_STATUS VARCHAR2(200);
P_MAX_NO_OF_ERRORS VARCHAR2(200);
P_COMMIT_FREQUENCY VARCHAR2(200);
P_OPERATING_MODE VARCHAR2(200);
P_BULK_SIZE VARCHAR2(200);
P_AUDIT_LEVEL VARCHAR2(200);
P_PURGE_GROUP VARCHAR2(200);
P_JOB_AUDIT VARCHAR2(200);
BEGIN
P_MAX_NO_OF_ERRORS := NULL;
P_COMMIT_FREQUENCY := NULL;
P_OPERATING_MODE := NULL;
P_BULK_SIZE := NULL;
P_AUDIT_LEVEL := NULL;
P_PURGE_GROUP := NULL;
P_JOB_AUDIT := 'TRUE';
SINIESTROS_MARCADOS_MAP.MAIN(
P_STATUS => P_STATUS,
P_MAX_NO_OF_ERRORS => P_MAX_NO_OF_ERRORS,
P_COMMIT_FREQUENCY => P_COMMIT_FREQUENCY,
P_OPERATING_MODE => P_OPERATING_MODE,
P_BULK_SIZE => P_BULK_SIZE,
P_AUDIT_LEVEL => P_AUDIT_LEVEL,
P_PURGE_GROUP => P_PURGE_GROUP,
P_JOB_AUDIT => P_JOB_AUDIT
);
:P_STATUS := P_STATUS;
END RESPALDO_HISTORIAL;
/
当我尝试编译此触发器时,我得到了这个屏幕:
在此屏幕中,我尝试点击" Aplicar" (使用西班牙语)有和没有NULL复选框,总是得到这个输出:
TRIGGER RESPALDO_HISTORIAL compilado
Errors: check compiler log
然后我运行了SHOW ERRORS命令,我得到了这个:
33/3 PLS-00049: bad bind variable 'P_STATUS'
现在我不太了解这些绑定变量。如果这是SQL Developer生成的用于运行包的代码,那么为什么我会收到此错误?
请帮忙!在这件事上我需要一些指导! 问候!
答案 0 :(得分:1)
变量前面的冒号表示该变量是绑定变量。此类型的绑定变量通常用于将值传入和传出匿名块。它们不允许在程序,函数或触发器中使用。在这种情况下,您需要删除行:P_STATUS := P_STATUS;
。