select * from tbl_czy where func_check_money(czyno) > 1000
其中func_check_money为自定义的函数。

解决方案 »

  1.   

    应该可以
    select * from tbl_czy where func_check_money(czyno) > 1000
    最简单的,楼主定义函数func_check_money将传入的参数加1 返回czyno+1的值
    和1000比较,一试就知道了!
      

  2.   

    我也是这样使用的,但编译的时候报告"PLS-00225:子程序或游标引用超出范围",如何解决?
      

  3.   

    检查func_check_money函数看看返回的是一个值还是什么其它的。
      

  4.   

    函数如下:
      function func_deqc_error(
        v_BZNO tbl_rjyls.bzno%type,
        v_MENO tbl_rjyls.txn_meno%TYPE) return varchar2 
      is
        v_error varchar2(256);
      begin
        if v_BZNO <> '01' then
          v_error := '外币金额 > 1万';
          return v_error;
        end if;
        
        if v_BZNO = '01' and v_MENO = '11' then
          v_error := '人民币现金 > 5万';
          return v_error;
        end if;
        
        if v_BZNO = '01' and v_MENO = '12' then
          v_error := '人民币转帐 > 10万';
          return v_error;
        end if;
        
        v_error := '';
        return v_error;
      end func_deqc_error;调用:
       procedure pkg_check_dcqk(
         v_JGNO tbl_jg.jgno%TYPE,         
         v_JYRQ tbl_rjyls.jyrq%TYPE,       
         v_CZYNO tbl_czy.czyno%TYPE)      
       is
       begin
         insert into tbl_ccdj
           (lsno, ccnr, jgno, jyrq, gyno, ccmno, jdrq) 
         select vouc_no, 
                func_deqc_error(bzno, txn_meno), --'人民币现金 > 5万'
                txn_sdn, 
                jyrq, 
                teller_id, 
                '00001',     --大额存取款超限
                TO_CHAR(sysdate(), 'YYYY-MM-DD')
         from tbl_rjyls
         where txn_sdn = v_JGNO 
           and jyrq = v_JYRQ
           and txn_code in ('1002','1100','1200','1602','1610','1620','1691','3005','3010','3090','3091','3092','3505','3510','3590','3591','3592')
           and ( (bzno = '01' and txn_meno = '11' and new_bal > 50000.00)
                or (bzno = '01' and txn_meno = '12' and new_bal > 100000.00)
                or (bzno <> '01' and new_myamt > 10000.00))
         order by zh, bzno, txn_meno; 错误:
       "PLS-00225:子程序或游标引用超出范围"如果去掉函数调用编译就OK;
    请高手帮忙看一下。
            
      

  5.   

    你需要先将SELECT语句单独执行一次,
    在加入到INSERT 语句中看看
    或许是你tbl_ccdj表中的字段长度不够,或者类型不匹配!