检索条件在存储过程中的的写法
对一个表和几个表进行检索取值,现在要求,根据存储过程中中传的参数不同,对表进行不同条件的查询,并按参数的条件进行排序,
如 如果参数param1=0,select * from tab1 where a > 100
param1=1,select * from tab1 where a <100
如果参数param2 =0 用order by co1 asc
param2 =1 用order by co1 desc
这个存储过程中,其实SQL是一个很长复杂的SQL语句,如果用大的if else进行括起来,
if中,还是else中,都是相同的,就这两点不同,那么觉得这很一部分可以共用,只是改下条件,,但我想,是不是不家其它的方法,可以直接将条件做为参数,然后赋于SQL进行查询呢???
[解决办法]
可以的.
if(param1=0) then
other:= 'and a> 100 ';
elseif(param1=1) then
other:= 'and a <100 ';
end if;
select * from a
where 1=1||other;
大概就是这样写的