带聚合的null计数

时间:2012-04-19 22:43:30

标签: oracle

在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行

1 个答案:

答案 0 :(得分:0)

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

通常,如果要处理返回0行的SELECT ... INTO语句,则需要指定在这种情况下您希望两个局部变量具有的值。如果您希望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;