日期:2014-05-16  浏览次数:20717 次

求一sql语法
  PROCEDURE pro_ab(
       in_a in char , 
       in_b in char  
    );
以上一个过程 pro_abc , 传入二个参数,分别是 in_a,in_b

1. 
当in_a 不为null的时候,则 sql 语句里面的where条件
 栏位1  = in_a 
当in_b 不为null的时候,则 sql 语句里面的where条件
 栏位2  = in_b
则  栏位1  = in_a  and  栏位2 = in_b ;

2. 如果 in_a 为null ,则in_b 不为null
则 and  栏位2 = in_b ;

即传入的参数值不同, where里面的 and 也不一样。求一sql语句。
------解决方案--------------------
引用:
  PROCEDURE pro_ab(
       in_a in char , 
       in_b in char  
    );
以上一个过程 pro_abc , 传入二个参数,分别是 in_a,in_b

1. 
当in_a 不为null的时候,则 sql 语句里面的where条件
 栏位1  = in_a 
当in_b 不为null的时候,则 sql 语句里面的where条件
 栏位2  = in_b
则  栏位1  = in_a  and  栏位2 = in_b ;

2. 如果 in_a 为null ,则in_b 不为null
则 and  栏位2 = in_b ;

即传入的参数值不同, where里面的 and 也不一样。求一sql语句。


select * from t where t.栏位1=decode(in_a,null,t.栏位1,in_a) and t.栏位2=decode(in_b,null,t.栏位2,in_b)

------解决方案--------------------
楼主第二条是啥意思?没看懂。
------解决方案--------------------
 
and(栏位1=in_a or in_a is null)


------解决方案--------------------

1 (栏位1=in_a or in_a is null) and (栏位2=in_b or in_b is null)

------解决方案--------------------
select
*
from tables
where (in_a is not null and 栏位1 = in_a) 
and (in_b is not null and 栏位2  = in_b)