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

时间:2015-04-13 08:19:18

标签: oracle stored-procedures query-parameters case-when

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

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;

1 个答案:

答案 0 :(得分:1)

尝试在no_data_found 时使用异常处理程序中的select并查看结果。可能是来自另一个用户的这个proc工作,它没有选择的权限,或者选择的对象是一个视图?也许你应该创建像 authid current_user 这样的程序?