Simple check for SELECT query empty result
Can anyone point out how to check if a select query returns non empty result set?
For example I have next query:
SELECT * FROM service s WHERE s.service_id = ?;
Should I do something like next:
ISNULL(SELECT * FROM service s WHERE s.service_id = ?)
to test if result set is not empty?
Solution 1:
IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
Solution 2:
Use @@ROWCOUNT:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT > 0
-- do stuff here.....
According to SQL Server Books Online:
Returns the number of rows affected by the last statement. If the number of rows is more than 2 billion, use ROWCOUNT_BIG.
Solution 3:
I agree with Ed B. You should use EXISTS method but a more efficient way to do this is:
IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?)
BEGIN
--DO STUFF HERE
END
HTH
Solution 4:
You can do it in a number of ways.
IF EXISTS(select * from ....)
begin
-- select * from ....
end
else
-- do something
Or you can use IF NOT EXISTS , @@ROW_COUNT
like
select * from ....
IF(@@ROW_COUNT>0)
begin
-- do something
end
Solution 5:
try:
SELECT * FROM service s WHERE s.service_id = ?;
IF @@ROWCOUNT=0
BEGIN
PRINT 'no rows!'
END