SQL Server-условный, где предложение - PullRequest
0 голосов
/ 09 марта 2012

Предложите мне правильный синтаксис для ниже сырых условий.

ALTER PROCEDURE [dbo].[pro_name]
@number as int ,

Select * from table 
if(@number=0)
begin
set @number=select max(number)from table
end
where table.number=@number

здесь мне нужно установить @number с максимальным значением, если переданное значение равно 0.а также хотите использовать то же самое в предложении wherer.

Ответы [ 2 ]

2 голосов
/ 09 марта 2012
ALTER PROCEDURE [dbo].[pro_name]
@number as int=0 --I recommend a default value here too
as
set @number=case @number when 0 then (select max(number)from [table]) else @number end;

Select * from [table] t
where t.number=@number;
go
0 голосов
/ 09 марта 2012

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

Однако это будет работать только в том случае, если числовой столбец уникален, что может иметь или не иметь место в вашем случае.

...