建议 @orderby int 参数设为 varchar类型,即直接传入要排序的字段列表
如果为空就取addtime desc
存储过程可以改为下面的样子
declare @sql varchar(8000)
set @sql='select * from table '
if @orderby=''
set @sql=@sql+' order by price1 asc '
else
set @sql=@sql+' order by '+@orderby
exec (@sql)
使用case语句,并且在最后再加一个order by 条件,就是
order by (case @orderby when 1 then price1 else addtime end) desc, 价格 asc
这样应该就可以了,^_^
如果需要按照价格优先的话,就调整一下order by中字段的顺序,这样就可以按照先后设置的字段顺序进行order by,呵呵,希望解决了问题,^_^
没有详细的看
但是否可以这样:将SQL语句做一个字符串,在ORDER BY 部份,写段代码,
SQLSTR='xxxx'
IF XXX
BEGIN
ORDERBYSQLSTR=' ORDER BY B DESC'
END
ELSE
BEGIN
ORDERBYSQLSTR=' ORDER BY B DESC'
END
SQLSTR=SQLSTR+ORDERBYSQLSTR
EXEC SQLSTR