计数为null合计
在Oracle中,我有一个存储过程查询表并将2个字段写入变量。问题是Oracle在没有任何返回时会抛出错误。这里是我的代码计数为null合计
SELECT COUNT (empno),Name
INTO empcount,empname
FROM lv_request_header
WHERE empno = emp
AND request_id = rqid
GROUP BY empname
使用NVL与计数仍然抛出一个错误
ERROR位于第1行:ORA-20000:lv_request_header没有找到ORA-06512:在第13行
错误你发布表明问题在于表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;
我有更多的代码在select into查询之后。我的问题是异常处理是否一直在程序的底层,或者我的代码是否会在异常处理之后出现? – user1345246 2012-04-19 23:05:50
@ user1345246 - 异常处理程序是'BEGIN ... END'块的一部分。因此,假设您将'SELECT'语句包装在自己的PL/SQL块中,那么执行会继续执行下一行代码,就像我在这里所做的那样。 – 2012-04-19 23:10:27
它如何可以把一个空白记录到一个变量? – user1345246 2012-04-19 22:51:49
错误在第1行: ORA-20000:找不到lv_request_header ORA-06512:在第13行 – user1345246 2012-04-19 22:54:55