有没有一种简单的方法可以获取查询返回的行数以及行本身。 例如,在存储过程中,我需要从查询返回行,如果没有返回行,我需要进行额外的处理。
SELECT * FROM MyTable;
IF [Number of rows] = 0 THEN
[Do other stuff]
END IF;
Proc 仍然需要返回 MyTable 的内容,即使它没有任何行。 我知道这可以使用两个 SELECT 语句(一个 COUNT() 获取行数,第二个获取行数),但我想知道是否有一种方法可以使用单个 SELECT 来完成此操作。
不,不在 SQL 中。
ROW_COUNT()
函数适用于受影响的行,而不是返回的行。它对于 INSERT
、UPDATE
、DELETE
等 DML 很有用,但对于 SELECT
查询,它会返回 -1。
某些客户端接口确实具有行返回功能,但这仅在客户端获取结果集后才起作用。客户端在获取行之前不知道将返回多少行。
正如您所写,您可以先编写一个SELECT COUNT(*)...
查询。这就是我会做的。