在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行
答案 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;