create or replace procedure (col in varchar2,col2 in varchar2) as
...
begin
...
select * into v_name from tbname where name like nvl(col,'%') and 
content like nvl(col2,'%');
...
end;
/

解决方案 »

  1.   

    create or replace procedure (col in varchar2,col2 in varchar2) as
    wSQL                  VARCHAR2(2000);
    wWHERE                  BOOLEAN;
    TYPE ListRec_Cur IS REF CURSOR; 
    wCurListRec1            ListRec_Cur;
    begin
    ...
    IF col <>'' THEN
      wWHERE:=' WHERE name =''' ||  col || '''';
    END IF;
    IF col1 <>'' THEN
       IF wWHERE<>'' THEN
          wWHERE:=' AND content =''' ||  col1 || '''';
       ELSE
          wWHERE:=' WHERE content =''' ||  col || '''';
       END IF ;
    END IF;
    wSQL :=wSQL || wWHERE;          
                           
    OPEN wCurListRec1 FOR wSQL;
    ...
    end;
      

  2.   

    create or replace procedure (var1 in varchar2,var2 in varchar2) as
    ...
    begin
    ...
    select col into v_name from tbname where deccode(name,null,var1)=var1 and 
    deccode(name,null,var2)=var2;
    ...
    end;
    /
      

  3.   

    写错了:create or replace procedure (var1 in varchar2,var2 in varchar2) as
    ...
    begin
    ...
    select col into v_name from tbname where deccode(name,null,var1)=var1 and 
    deccode(content,null,var2)=var2;
    ...
    end;
    /
      

  4.   

    create or replace procedure (var1 in varchar2,var2 in varchar2) as
    ...
    begin
    ...
    select col into v_name from tbname where deccode(name,null,var1)=var1 and 
    deccode(content,null,var2)=var2;
    ...
    end;
      

  5.   

    如果楼主所说的空是指 null,则 bzszp(www.bzszp.533.net) 和LGQDUCKY(飘) 两位大侠所说即可;
    如果楼主所说的空是指 '',则必须:select col into v_name from tbname 
     where name like '%'||var1||'%'
       and content like '%'||var2||'%'
      

  6.   

    create procedure pro(p_name in varchar2,p_content in varchar2)
    as
    v_name varchar2(10);
    v_content varchar2(30);
    begin
    select name,content in v_name,v_content from tab_name where nvl2(p_name,name,1)=nvl(p_name,1) and nvl2(p_content,content,1)=nvl(p_content,1);
    end;
    /
      

  7.   

    --把查询条件改为:
    where (name =?or name is null) and (content = ? or content is null),