where (case @year when 0 then 1=1 else [year]=@year end)不对
...全文
4917打赏收藏
存储过程简单问题--传递参数
存储过程不太熟,问个简单问题 sql语句已经太长,并且参数在语句中间。现在就是想加一个条件,判断传入的参数,如果不是0则加上该条件,是0就不加该条件。 很简单,看看大家比较正规的写法。 where (case @year when 0 then 1=1 else [year]=@year end)不对
[Quote=引用 6 楼 lchy110 的回复:]
引用 5 楼 kevin_xu4365 的回复:
引用 3 楼 lchy110 的回复:
是存储过程还是SQL语句拼写? 是存储过程就好些了 可以用if啊
create procedure test
@where varchar(100)
as
declare @sqlstr varchar(500)
begin
Set @sqlstr =''
if @where <>''--------判断是否为空
begin
SET @sqlstr= 'select * from tablename where '+@where ---------------不为空则加条件
end
else
begin
SET @sqlstr= '…
[Quote=引用 5 楼 kevin_xu4365 的回复:]
引用 3 楼 lchy110 的回复:
是存储过程还是SQL语句拼写? 是存储过程就好些了 可以用if啊
create procedure test
@where varchar(100)
as
declare @sqlstr varchar(500)
begin
Set @sqlstr =''
if @where <>''--------判断是否为空
begin
SET @sqlstr= 'select * from tablename where '+@where ---------------不为空则加条件
end
else
begin
SET @sqlstr= 'select * from tablename ' --------…
[Quote=引用 3 楼 lchy110 的回复:]
是存储过程还是SQL语句拼写? 是存储过程就好些了 可以用if啊
create procedure test
@where varchar(100)
as
declare @sqlstr varchar(500)
begin
Set @sqlstr =''
if @where <>''--------判断是否为空
begin
SET @sqlstr= 'select * from tablename where '+@where ---------------不为空则加条件
end
else
begin
SET @sqlstr= 'select * from tablename ' --------…
[/Quote]
是存储过程还是SQL语句拼写? 是存储过程就好些了 可以用if啊
create procedure test
@where varchar(100)
as
declare @sqlstr varchar(500)
begin
Set @sqlstr =''
if @where<>''--------判断是否为空
begin
SET @sqlstr= 'select * from tablename where '+@where ---------------不为空则加条件
end
else
begin
SET @sqlstr= 'select * from tablename ' -----------------为空则不处理
end
exec (@sqlstr)
end