如何在 Oracle Procedure 的 CASE WHEN 中调用另一个 Procedure

How to call another Procedure in CASE WHEN in Oracle Procedure

我创建了许多程序来从远程数据库中提取数据并将其存储在我的本地数据库表中。当我 运行 它单独时,程序 运行 成功。但是现在我想创建将根据条件调用的动态过程。我已经为此创建了一个小程序,但是当我 运行 这个程序时出现错误:

ORA-06512: 
01403. 00000 -  "no data found"

我将程序调用为 EXT_EXTRACTION(1000161); 我认为问题是我没有正确调用 CASE WHEN 中的过程,也不知道如何正确调用它。

这是我的程序;

PROCEDURE "EXT_EXTRACTION"(
   IN_KPI_DEF_ID IN NUMBER DEFAULT 0
) AS 
  ENTITY_CLASS_NAME Number := 0;
  IN_EVENT_ID NUMBER;
BEGIN
  Select EVENT_ID 
    INTO IN_EVENT_ID 
    from RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION 
   WHERE KPI_DEF_ID = IN_KPI_DEF_ID;
  CASE 
    WHEN IN_EVENT_ID = 10049 
    THEN EXT_10049_ACTIVATE_OPTION;
  END CASE;

  COMMIT; 
END EXT_EXTRACTION;

尝试在 no_data_found 时用 异常包围您的程序中的 select 并查看结果。可能是这个过程来自另一个没有 select 权限的用户,或者 selected 对象是一个视图?也许你应该创建像 authid current_user?

这样的程序