0

在 Oracle 中,我有一个查询表并将 2 个字段写入变量的存储过程。问题是当没有返回任何东西时,Oracle 会抛出一个错误。这是我的代码

  SELECT COUNT (empno),Name
    INTO empcount,empname
    FROM lv_request_header
   WHERE empno = emp 
     AND request_id = rqid
   GROUP BY empname

使用带有计数的 NVL 仍然会引发错误

第 1 行出现错误:ORA-20000:未找到 lv_request_header ORA-06512:第 13 行

4

1 回答 1

0

您发布的错误表明问题在于该表lv_request_header不存在或该过程的所有者无权访问它。如果过程所有者以外的用户拥有此表,您可能需要使用模式名称限定表名或创建对象的同义词。

通常,如果您要处理SELECT ... INTO返回 0 行的语句,则需要指定在这种情况下您希望两个局部变量具有什么值。如果你想empcount成为 0 并empname成为 NULL,你可以做这样的事情

BEGIN
  SELECT COUNT (empno),Name
    INTO empcount,empname
    FROM lv_request_header
   WHERE empno = emp 
     AND request_id = rqid
   GROUP BY empname
EXCEPTION
  WHEN no_data_found
  THEN
    empcount := 0;
    empname  := NULL;
END;
于 2012-04-19T23:00:39.743 回答