SQL Server: Select Top 0?
Its a way of getting an empty set; for example to create a new empty table with the same columns as an existing one;
SELECT TOP 0 * INTO new_table FROM old_table
Or to act a as source for column names
Or as a way to return column details but no data to a client layer
Or as a query to check connectivity
Its the same as;
SELECT * FROM table WHERE 0=1
To name columns in a UNION ALL
Be sure to read Alex K.'s answer as well. He has a lot of reasons that I have used as well. This was just the most obvious one.
By doing this, you have an empty resultset with all columns instead of no result.If the program using the stored procedure expects certain columns, it would crash otherwise.