Plsql PL/SQL绑定变量的问题

Plsql PL/SQL绑定变量的问题,plsql,oracle11g,oracle-sqldeveloper,Plsql,Oracle11g,Oracle Sqldeveloper,最近,我部署了一个Oracle WareHouse Builder(OWB)映射。在我现在正在工作的场景中,在事实表上发生Update语句(使用写回值)后,需要通过触发器触发此映射(ETL过程) 当映射作为包部署到目标模式时,触发器必须调用OWB为包创建的主过程。起初我不知道如何完成这项任务,但SQL Developer给了我一个提示: 所以,我把这个代码放在我的触发器里。像这样: CREATE OR REPLACE TRIGGER RESPALDO_HISTORIAL AFTER UPDAT

最近,我部署了一个Oracle WareHouse Builder(OWB)映射。在我现在正在工作的场景中,在事实表上发生Update语句(使用写回值)后,需要通过触发器触发此映射(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生成的运行包的代码,那么为什么会出现此错误

请帮忙!在这件事上我需要一些指导!
你好

变量前面的冒号表示该变量是绑定变量。这种类型的绑定变量通常用于将值传入和传出匿名块。它们不允许出现在过程、函数或触发器中。在这种情况下,需要删除行
:P_STATUS:=P_STATUS

但如果我这样做,如何确保ETL正确执行?我是说,记得我没有写这段代码。它是由SQL开发人员生成的。这不是OWB在执行ETL时运行的完全相同的代码吗?我不知道您的包到底做了什么,也不知道为什么要将对它的调用放在触发器中。我回答了你提出的具体问题。如果你需要进一步的了解,可以修改你的问题,或者发布一个新的问题。但是,要具体一点。“我如何才能确保这将正确执行?”太宽泛,无法得到有用的答案。