个人建议你更改一下函数定义和调用方式:定义:
Obtain_RangeCondition('fname','f1','f2','ftype')调用:
Obtain_RangeCondition('YCZBSD','800','12000','010')Obtain_RangeCondition('TCRQ','1970/01/01','to_char(SYSDATE,''yyyy/mm/dd'')','010')
(把SYSDATE作为普通字符串日期传入)
 
Obtain_RangeCondition('NY','197001','*','010') 

解决方案 »

  1.   

    因为到从数据表中提取这些参数,其中范围这个参数在库中就是(a,b)形式似的!我想通过这个
    SQL> create or replace procedure pro_test
      2     ( a number,
      3       b number,
      4       vstring varchar2
      5      )
      6     as
      7     begin
      8       if to_number(vstring)<a or to_number(vstring) > b then
      9          RAISE_APPLICATION_ERROR(-20007,'VSTRING 的值超出范围');
     10     end if;
     11  end ;
     12  /过程已创建。SQL> exec  pro_test(1,100,'120');
    BEGIN pro_test(1,100,'120'); END;改成上面要求的程序
      

  2.   

    create procedure pro
    as
    cursor t_sor is
    select col1,col_a,col_b from tabname;
    begin
    for v_sor in t_sor loop
    if v_sor.col1<v_sor.col_a or v_sor.col1>col_b then
    RAISE_APPLICATION_ERROR(-20007,'VSTRING 的值超出范围');
    end if;
    end loop;
    end;
    /