EDIT
Поскольку нет смысла иметь два абсолютно одинаковых ответа, и меня избили, вот альтернативное решение:
alter procedure [dbo].[pro_name]
@number as int as
select top 1 * from [table]
where number = @number or @number = 0
order by [table].number desc
Однако это будет работать только в том случае, если числовой столбец уникален, что может иметь или не иметь место в вашем случае.