我的存储过程有问题。在以下情况下失败
cntmismatch NUMBER;
SELECT COUNT(keyvalue) INTO cntmismatch
FROM tbl_temp GROUP BY keyvalue HAVING count(keyvalue) > 1如果没有满足上述条件的数据,则失败
我甚至试着用
SELECT NVL(COUNT(keyvalue),0) INTO cntmismatch
FROM tbl_temp GROUP BY keyvalue HAVING count(keyvalue) > 1但是它仍然在这里返回null,并且proc失败
发布于 2013-07-12 18:39:11
您只需在代码中捕获并处理异常即可。在您的例子中,您将得到一个NO_DATA_FOUND异常。
下面你会看到一个例子。
PROCEDURE count_mismatch AS
cntmismatch NUMBER;
BEGIN
BEGIN
SELECT COUNT(keyvalue) INTO cntmismatch FROM tbl_temp GROUP BY keyvalue;
EXCEPTION
WHEN no_data_found THEN
cntmismatch := -1;
END;
END 我认为,你不再需要HAVING子句了。因此,我删除了它。如果您的语句将返回超过预期的1行,那么您还必须处理TOO_MANY_ROWS异常!
https://stackoverflow.com/questions/17612822
复制相似问题