CREATE OR REPLACE Procedure Sp_Spname
       (
       zhen varchar2,
       cun varchar2,
       zu varchar2
       )
       As
       Cursor Zzs_Cursor Is
        Select * From zjbsc@Orcl_74 where sszc=zhen and ssc=cun and zld=zu;
        Row_Cursor Zzs_Cursor%Rowtype;
        Row_Diqu   are_districtinfodic%Rowtype;
        v_Count    Integer;
        Begin
        If Zzs_Cursor%Isopen = False Then
           Open Zzs_Cursor;
          End If;
           Loop
           Fetch Zzs_Cursor
            Into Row_Cursor;            Exit Zzs_Cursor%Notfound Or Zzs_Cursor%Notfound Is Null;
            Begin
      v_Count := 1;
      select * Into Row_Diqu from V1 where V1.dqmc1||V1.dqmc  in (select ssc||zld from zjbsc@orcl_74 where sszc=zhen and ssc=cun);
      --Select * Into Row_Diqu From are_districtinfodic Where Xxx = Row_Cursor.Xxx;
    Exception
      When No_Data_Found Then
        v_Count := 0;
    End;
    If v_Count = 1 Then
      Insert Into p_personinfo
      Values
        (seqare_districtinfodic.nextval,Row_Cursor.XM,Row_Cursor.XB,Row_Cursor.MZ,Row_Cursor.GMSFZHM,Row_Cursor.CSRQ,Row_Diqu.aid,Row_Cursor.jzdz,'',Row_Cursor.hzxz,Row_Cursor.hyzt,0,Row_Cursor.xzzt,sysdate);
    End If;
  End Loop;
  Close Zzs_Cursor;
End Sp_Name;
之后报错PROCEDURE MYDEMO.SP_SPNAME 编译错误错误:PLS-00103: 出现符号 "%"在需要下列之一时:
        . ; when
行:21
文本:Exit Zzs_Cursor%Notfound Or Zzs_Cursor%Notfound Is Null;错误:PLS-00103: 出现符号 "BEGIN"
行:22
文本:Begin错误:PLS-00103: 出现符号 "IF"在需要下列之一时:
        end not pragma final
          instantiable order overriding static member constructor map
行:30
文本:If v_Count = 1 Then错误:PLS-00103: 出现符号 "CLOSE"在需要下列之一时:
        end not pragma final
          instantiable order overriding static member constructor map
行:36
文本:Close Zzs_Cursor;错误:PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
        pragma
行:37
文本:End Sp_Name;

解决方案 »

  1.   

    CREATE OR REPLACE Procedure Sp_Spname(zhen varchar2,
                                          cun  varchar2,
                                          zu   varchar2) As
      Cursor Zzs_Cursor Is
        Select *      From zjbsc@Orcl_74
         where sszc = zhen
           and ssc = cun
           and zld = zu;
      Row_Cursor Zzs_Cursor%Rowtype;
      Row_Diqu   are_districtinfodic%Rowtype;
      v_Count    Integer;
    Begin
      If Zzs_Cursor%Isopen Then
        Open Zzs_Cursor;
      End If;
      Loop
        Fetch Zzs_Cursor
          Into Row_Cursor;    Exit when Zzs_Cursor%Notfound;
        Begin
          v_Count := 1;
          select *
            Into Row_Diqu
            from V1
           where V1.dqmc1 || V1.dqmc in
                 (select ssc || zld
                    from zjbsc@orcl_74
                   where sszc = zhen
                     and ssc = cun);
          --Select * Into Row_Diqu From are_districtinfodic Where Xxx = Row_Cursor.Xxx;
        Exception
          When No_Data_Found Then
            v_Count := 0;
        End;
        If v_Count = 1 Then
          Insert Into p_personinfo
          Values
            (seqare_districtinfodic.nextval,
             Row_Cursor.XM,
             Row_Cursor.XB,
             Row_Cursor.MZ,
             Row_Cursor.GMSFZHM,
             Row_Cursor.CSRQ,
             Row_Diqu.aid,
             Row_Cursor.jzdz,
             '',
             Row_Cursor.hzxz,
             Row_Cursor.hyzt,
             0,
             Row_Cursor.xzzt,
             sysdate);
        End If;
      End Loop;
      Close Zzs_Cursor;
    End Sp_Spname;
      

  2.   

    你改后的那个之后还有包Exception异常之类,后来就重新写了一下--
    CREATE OR REPLACE Procedure pro_aa(zhen varchar2,
                                          cun  varchar2,
                                          zu   varchar2)
                                           As
      Cursor Zzs_Cursor Is
        Select XM,XB,MZ,GMSFZHM,CSRQ,JZDZ,HKXZ,HYZK,XZZT      From zjbsc@Orcl_74
         where sszc = zhen
           and ssc = cun
           and zld = zu;
      Row_Cursor Zzs_Cursor%Rowtype;  v_Count    Integer;
      Cursor diqu_Cursor Is
      select *
            from V1
           where V1.dqmc1 || V1.dqmc in
                 (select ssc || zld
                    from zjbsc@orcl_74
                   where sszc = zhen
                     and ssc = cun);
    Begin    Open Zzs_Cursor;
        /*open diqu_Cursor;*/  Loop
        Fetch Zzs_Cursor Into Row_Cursor;
              Exit when Zzs_Cursor%Notfound;
        for rowaid in diqu_Cursor 
        loop
       
        /*If v_Count = 1 Then*/
          Insert Into p_personinfo
          Values                   
            (seqare_districtinfodic.nextval,
             Row_Cursor.XM,
             Row_Cursor.XB,
             Row_Cursor.MZ,
             Row_Cursor.GMSFZHM,
             Row_Cursor.CSRQ,
             rowaid.aid,
             Row_Cursor.jzdz,
             '',
             Row_Cursor.hkxz,
             Row_Cursor.hyzk,
             0,
             Row_Cursor.xzzt,
             sysdate);
      /*  End If;*/
        end loop;
      End Loop;
      Close diqu_Cursor;
      Close Zzs_Cursor;
    End pro_aa;
    现在是可以用的。谢谢