在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行
发布于 2012-04-20 07:00:40
您发布的错误表明问题在于表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;https://stackoverflow.com/questions/10237899
复制相似问题