2014-11-18 2 views
0

Я хочу получить последние N строк таблицы.
Что-то вроде этого:TSQL: выберите последние N строк, если не указано, выберите все

CREATE PROCEDURE [dbo].[spProducts] 
    @Rows int 
AS 
    SELECT TOP(50) * 
    FROM tblProduct 

Но если число строк не указано в поле ввода-парах @Rows int, все строки должны быть выведены (выберите * (весь))
ли мне нужно реализовать Если/Else-statements или может быть ярлык, который может превратить вход-param @Rows int в астерикс?

+0

Вы получите сообщение об ошибке, если вы не укажете параметр @Rows при выполнении spProducts. –

+1

вы также можете попробовать с этим \t CREATE PROCEDURE [DBO]. [SpgetOrder] \t (@Rows INT = нуль) \t AS \t \t Выбор TOP (ISNULL (@ Ряды, 0)) * FROM AdventureWorks2008R2.dbo.Orders \t \t UNION \t \t SELECT * FROM AdventureWorks2008R2.dbo.Orders WHERE @Rows является нулевым –

+0

, кажется, что это делает трюк. tyvm! :) – MrMAG

ответ

0

Это работает

CREATE PROCEDURE [dbo].[spProducts] 
    (@Rows int =null) 
AS 
    SELECT TOP(ISNULL(@Rows,0)) * 
    FROM tblProduct 
     UNION SELECT * 
    FROM tblProduct 
     WHERE @Rows is null 

кредитов идет на Naveen Kumar, tyvm!

Смежные вопросы