Pl/SQL如何检查查询是否返回空?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我正在编写一个过程,我需要检查我的SELECT查询是否返回了一个空记录。

我该怎么做?

我试过这个:

temp shelves.loadability%TYPE := NULL;
BEGIN

select loadability into temp from shelves where rownumber = x and columnnumber = y;
IF temp IS NOT NULL THEN
/* do something when it's not empty */
ELSE
/* do the other thing when it's empty */
END IF;

但如果第二个分支永远不起作用..。

编辑:

哦,太简单了...

temp shelves.loadability%TYPE;
BEGIN

select count(*) into temp from shelves where rownumber = x and columnnumber = y;
IF temp != 0 THEN
/* do something when it's not empty */
ELSE
/* do the other thing when it's empty */
END IF;

END;
提问于
用户回答回答于

通常,更喜欢的是对现有的记录执行SQL操作。换句话说,您可以对每一次匹配执行任务,如果没有发生,则不执行任务。所以你甚至不需要if-否则的构造。

我不建议使用游标来完成这项工作。但是如果你必须这样做,那么光标可能会做你想做的事情。

用户回答回答于

使用异常处理程序

Begin
  select column
  into variable
  from table
  where ...;

  -- Do something with your variable

exception
 when no_data_found then
    -- Your query returned no rows --

 when too_many_rows
    -- Your query returned more than 1 row --

end;

扫码关注云+社区