1

WHERE句内のプロシージャのパラメータの1つにnullチェックを追加して、コードブロックが繰り返されるのを避けることはできますか

select aa=t1.aa,bb=t2.bb ,cc=t3.cc
 from t1,t2,t3,t4,t5
where t1.p1=t2.p1
and t2.p2=t3.p2
 IF(procParameter IS NOT NULL)
   and t3.p2=procParameter 
and t4.p2=t5.p2
and t5.p3=t1.p2 

ANDの1つを条件付きで実行したいのですが、それ以外の場合はまったく実行されません..!!!!

この最適化にはどうすればよいですか?? 次のようなコードの繰り返しはしたくない

IF(procParameter IS NOT NULL)
begin
  select aa=t1.aa,bb=t2.bb ,cc=t3.cc
    from t1,t2,t3,t4,t5
     where t1.p1=t2.p1
    and t2.p2=t3.p2
    and t3.p2=procParameter 
     and t4.p2=t5.p2
    and t5.p3=t1.p2 
end
Else
begin
  select aa=t1.aa,bb=t2.bb ,cc=t3.cc
    from t1,t2,t3,t4,t5
     where t1.p1=t2.p1
    and t2.p2=t3.p2
     and t4.p2=t5.p2
    and t5.p3=t1.p2 
end

ありがとう、

4

1 に答える 1

1

これは 1 つのアプローチです。

AND (procParameter IS NULL OR t3.p2=procParameter)
于 2012-04-20T15:36:03.410 に答える