PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误

SQL> create or replace procedure sybx_dwsjqy as
  2     --获取2版单位信息
  3     cursor cur_Dwjbxx is
  4        select * from tyr_Dwjbxx ;
  5     --根据单位名单获取当前系统的单位信息,以判断是否存在。
  6     cursor cur_chb1(p_aab004 varchar2,t_bab016 varchar2) is
  7        select * from chb1 where  aab004 = p_aab004 and bab016 = t_bab016;
  8     --根据dwhm获取2版单位年检信息表
  9     cursor cur_qcjyeb(p_dwhm varchar2) is
 10        select * from tsy_qcjyeb where dwhm = p_dwhm ;
 11     --根据dwhm获取2版单位缴费核定情况表
 12     cursor cur_jljsb(p_dwhm varchar2) is
 13        select * from tsy_jljsb where dwhm = p_dwhm ;
 14 
 15     chb1num number := 0 ;--统计新增chb1数量
 16     chb3num number := 0 ;--统计新增chb3数量
 17     chb6num number := 0 ;--统计新增chb6数量
 18     p_bab016  chc1.bab016%type := '350100000000' ; --设置分中心编号
 19     p_chb1  chb1%rowtype ;--单位参保表信息
 20     p_chb3  chb3%rowtype ;--单位年检表信息
 21     p_chb6  chb6%rowtype ;--单位缴费情况确认表信息
 22  begin
 23    insert into log_SybxDwsjqy
 24           values(to_char(sysdate,'yyyy-mm-dd hh:mi:ss'),
 25                '开始时间:'||to_char(sysdate,'yyyy-mm-dd hh:mi:ss'));
 26    for t_dwxx in cur_Dwjbxx loop
 27        --判断单位是否已在3版参保,如果没有则新增,有则直接读取
 28        open cur_chb1(t_dwxx.dwmc,p_bab016) ;
 29        if cur_chb1%found then
 30            fetch cur_chb1 into p_chb1;
 31        else
 32            p_chb1 := setChb1(p_bab016,t_dwxx);
 33            --保存新增的单位参保信息
 34            if p_chb1 is not null  then
 35               insert into chb1 values p_chb1 ;
 36               chb1num := chb1num + 1 ;
 37            end if ;
 38            if mod(chb1num,500) = 0 then
 39               commit;
 40            end if ;
 41        end if;
 42 
 43        if  p_chb1 is not null then
 44           --读取单位年检信息表
 45           open cur_qcjyeb(t_dwxx.dwhm);
 46           for temp_qcjyeb in cur_qcjyeb loop
 47              --判断单位对应的年度的年检信息是否已在三版登记
 48              select * from chb3
 49                       where aab004 = p_chb1.aab004
 50                       and bci207 = temp_qcjyeb.yjnf
 51                       and bab016 = p_bab016 ;
 52              if sql%notfound  then
 53                 p_chb3 := setChb3(p_chb1 , temp_qcjyeb);
 54                 --保存新增的单位参保信息
 55                 if p_chb3 is not null  then
 56                    insert into chb3 values p_chb3 ;
 57                    chb3num := chb3num + 1 ;
 58                 end if ;
 59                 if mod(chb3num,500) = 0 then
 60                    commit;
 61                 end if ;
 62              end if;
 63           end loop;
 64           --读取单位缴费核定信息
 65           open cur_jljsb(t_dwxx.dwhm);
 66           for temp_jljsb in cur_jljsb loop
 67              --判断单位对应的月份的缴费核定信息是否已在三版登记
 68              select * from chb6
 69                       where aab004 = p_chb1.aab004
 70                       and bci230 = tsy_jljsb.snmzgrs
 71                       and bab016 = p_bab016 ;
 72              if sql%notfound  then
 73                 p_chb6 := setChb6(p_chb1 , temp_jljsb);
 74                 --保存新增的单位缴费核定信息
 75                 if p_chb6 is not null  then
 76                    insert into chb6 values p_chb6 ;
 77                    chb6num := chb6num + 1 ;
 78                 end if ;
 79                 if mod(chb6num,500) = 0 then
 80                    commit;
 81                 end if ;
 82              end if;
 83           end loop;
 84        end if;
 85    end loop;
 86    insert into log_SybxDwsjqy
 87           values(to_char(sysdate,'yyyy-mm-dd hh:mi:ss'),
 88                '迁移完成,共迁移:'
 89                ||'chb1表:' || chb1num || '条记录;'
 90                ||'chb3表:' || chb3num || '条记录;'
 91                ||'chb6表:' || chb6num || '条记录.');
 92    commit;
 93  end ;
 94  /
 
Warning: Procedure created with compilation errors
 
SQL> show error
Errors for PROCEDURE FZLEMIS.SYBX_DWSJQY:
 
LINE/COL ERROR
-------- --------------------------------------------------
34/14    PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误
34/11    PL/SQL: Statement ignored
43/11    PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误
43/7     PL/SQL: Statement ignored

 

解决:

记录可以直接赋值。RECORD1 :=RECORD2;

 记录不可以整体比较.
 记录不可以整体判断为空。

 

你可能感兴趣的:(数据库)