日期:2014-05-17  浏览次数:20846 次

检索条件在存储过程中的的写法
对一个表和几个表进行检索取值,现在要求,根据存储过程中中传的参数不同,对表进行不同条件的查询,并按参数的条件进行排序,

如   如果参数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;

大概就是这样写的