:P_MDS1 IS NULL OR MSD.SCHEDULE_DESIGNATOR = :P_MDS1
:P_MDS2 IS NULL OR MSD.SCHEDULE_DESIGNATOR = :P_MDS2
:P_MDS3 IS NULL OR MSD.SCHEDULE_DESIGNATOR = :P_MDS3我需要查找MSD.SCHEDULE_DESIGNATOR的某一个或者是多个值,即:有三个输入值,当输入都是空时,就输出全部,当只输入一个时就输出输入的那个值,输入两个就输出两个,输入三个就输出三个值。有谁知道怎么写?

解决方案 »

  1.   

    用模糊查询啊like..空的话,全部查出,输入一个时,也得到对应的那个值
      

  2.   

    1、动态连接字符串,但这样可能就无法使用绑定变量带来的好处理。
    2、在存储过程中条件拼接SQL语句,然后执行,如:
    sqlstr := 'select * from test  where 1=1'
    if P_MDS1 is null  then 
         P_MDS1 :=1 ;
         sqlstr := sqlstr || ' and 1=:p_msd1';
    else
         sqlstr := sqlstr || ' and SCHEDULE_DESIGNATOR=:p_msd1';
    end if;
    其它类似处理
    最后使用动态执行,传入绑定参数
    execute immediate sqlstr using p_msd1,p_msd2,p_msd3