首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle存储过程中出现故障

Oracle存储过程中出现故障
EN

Stack Overflow用户
提问于 2013-07-12 18:26:46
回答 4查看 239关注 0票数 0

我的存储过程有问题。在以下情况下失败

代码语言:javascript
运行
复制
cntmismatch NUMBER;

SELECT COUNT(keyvalue) INTO cntmismatch 
FROM tbl_temp GROUP BY keyvalue HAVING count(keyvalue) > 1

如果没有满足上述条件的数据,则失败

我甚至试着用

代码语言:javascript
运行
复制
SELECT NVL(COUNT(keyvalue),0) INTO cntmismatch 
FROM tbl_temp GROUP BY keyvalue HAVING count(keyvalue) > 1

但是它仍然在这里返回null,并且proc失败

EN

Stack Overflow用户

发布于 2013-07-12 18:39:11

您只需在代码中捕获并处理异常即可。在您的例子中,您将得到一个NO_DATA_FOUND异常。

下面你会看到一个例子。

代码语言:javascript
运行
复制
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异常!

票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17612822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档