oracle查询语句,where后面的条件,如果:_chartid 参数有值就带参数查询,如果参数没有值就舍去查询条件,用SQL语句写出来,请再不要告诉我在前台代码里给判断式。select * from chart where chartid=:_chrtid and chartname=:_chartname

解决方案 »

  1.   

    这是存储过程吧?
    create procedure checkwhere 
     @a char(20),@b char(20)
    as
    if(a is not null,b is not null)
    select * from chart where...
    else select * from chartexecute checkwhere 'a','b'
    好像是这么写,我也不太记得了。
      

  2.   


    这个很难搞的,没有办法只能试下如下了,只能用plsql块了,单条sql是搞不定的!
    declare dnamet varchar(20):='ACCOUNTING';
     sqlcon varchar(20):='11';
    begin
        
         if (:_chrtid!='' or :_chrtid!=null)
            select * from chart where chartid=:_chrtid and chartname=:_chartname 
         else
             select * from chart where chartname=:_chartname        
    end;你要是想用存储过程的话,直接把这些plsql块copy到存储过程里面即可。
      

  3.   

    用存储过程把,如果是sql的话,case when then end 最好了
      

  4.   

    那么在execute immediate 'SQL' using XXX
    这边怎么处理呢?