Cursor error! PLS-00306

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
  

Poston Wed, 24 Sep 2008 8:43 am

I'm creating a procedure which has a cursor two cursors.

This showing this message PLS-00225: subprogram or cursor ' the ' reference is out of scope follows the procedure.

Code: Select all
create or replace procedure prod7035_002(p_mens      in   out   varchar2)
is

   v_cd_endosso_endossado   number;
   v_dt_emissao_apolice   number;
   v_id_tipo_endosso   number;

cursor   c1 is
   select   a.cd_ramo,
      a.cd_local,
      a.cd_apolice,
      a.cd_endosso,
      a.id_registro
   from   interface_extracao   a
   where   a.id_registro      =   '37'
   and   trunc(a.dt_extracao)   =   trunc(sysdate);

cursor   c2   (
         p_cd_local    number,
         p_cd_ramo_cober number,
         p_cd_apolice    number,
         p_cd_endosso     number
      )   is
   --
   select   c.cd_ramo_cobertura
   from   v_histo_apoli_item_ramo c
   where     c.cd_ramo      =   p_cd_ramo_cober
   and   c.cd_local      =   p_cd_local
   and   c.cd_apolice      =   p_cd_apolice
   and   nvl(c.cd_endosso,0)   =   nvl(p_cd_endosso,0);
   --
begin
   for   rg1   in   c1   loop
      select    b.cd_endosso_endossado,
         b.dt_emissao_apolice,
         b.id_tipo_endosso
      into   v_cd_endosso_endossado,
         v_dt_emissao_apolice,
         v_id_tipo_endosso
      from   v_histo_apolice b
      where   b.cd_ramo              =   a.cd_ramo
      and   b.cd_local           =   a.cd_local
      and   b.cd_apolice           =   a.cd_apolice
      and   nvl(b.cd_endosso,0)   =   nvl(a.cd_endosso,0);
        --
      for   rg2   in   c2   (   rg1.cd_ramo,
                     rg1.cd_local,
                     rg1.cd_apolice,
                     rg1.cd_endosso,
                     rg1.id_registro
                  ) loop
         insert   into   inter_estatistica_cancelamento   (   cd_ramo,
                              cd_local,
                              cd_apolice,
                              cd_endosso,
                              id_registro_plataforma,
                              id_tipo_endosso,
                              dt_emissao,
                              cd_endosso_endossado,
                              cd_ramo_cobertura,
                              vl_premio
                           )
                        values   (   rg1.cd_ramo,
                              rg1.cd_local,
                              rg1.cd_apolice,
                              rg1.cd_endosso,
                              rg1.id_registro,
                              v_id_tipo_endosso,
                              v_dt_emissao_apolice,
                              v_cd_endosso_endossado,
                              p_cd_ramo_cober,
                              0
                           );

   end loop;
      end loop;
end;

anyone know why?
dmaranini
Location: sao paulo

Poston Wed, 24 Sep 2008 8:48 am

Brother, take a look at your second cursor.

It asks 4 parameters and you open it with 5 parameters: Cursor:
Code: Select all
c2   (
         p_cd_local    number,
         p_cd_ramo_cober number,
         p_cd_apolice    number,
         p_cd_endosso     number
      )   is
:
Code: Select all
c2   (   rg1.cd_ramo,
                     rg1.cd_local,
                     rg1.cd_apolice,
                     rg1.cd_endosso,
                     rg1.id_registro
the id_registro is more or must be declared in the cursor, beleza?

Another thing, have a look at order of the parameters that you are opening the cursor because it may have a problem with that, beleza?

qualquer thing sends to us.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Wed, 24 Sep 2008 8:55 am

but the problem then this in
Code: Select all
   for   rg1   in   c1   loop
      select    b.cd_endosso_endossado,
         b.dt_emissao_apolice,
         b.id_tipo_endosso
      into   v_cd_endosso_endossado,
         v_dt_emissao_apolice,
         v_id_tipo_endosso
      from   v_histo_apolice b
      where   b.cd_ramo              =[b]   a.cd_ramo[/b]
      and   b.cd_local           =   a.cd_local
      and   b.cd_apolice           =   a.cd_apolice
      and   nvl(b.cd_endosso,0)   =   nvl(a.cd_endosso,0);
he error q I quoted in the cursor c1 and throws the focus to the a.cd _ branch that this bold.

I tried to add id_registro. P_ID_REGISTRO. and yet he keeps giving the same error.

vlw for warning![/b]
dmaranini
Location: sao paulo

Poston Wed, 24 Sep 2008 9:01 am

Brow talks, beleza?
So man. ..

Following, there are two problems here, so: 1) That I quoted previously;
2) you must have forgotten to some table or, change all a. alguma_coisa in the reg1. You do not have an aliased table \"a\".

Take a peek at this point and, anything, send it to us.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Wed, 24 Sep 2008 9:26 am

But I have the a.cd _ branch, aliased table when I open the cursor.
Code: Select all
cursor   c1 is
   select   a.cd_ramo,
      a.cd_local,
      a.cd_apolice,
      a.cd_endosso,
      a.id_registro
   from   interface_extracao   a
   where   a.id_registro      =   '37'
   and   trunc(a.dt_extracao)   =   trunc(sysdate);
I'vê never worked opening c1 c2 and then is ... is in c1 not rg1 finds the aliased table?
dmaranini
Location: sao paulo

Poston Wed, 24 Sep 2008 9:33 am

Brother, in this case, you have to mount the C1 with parameters too, as the C2.
I'm going to set up an example here for you and send you.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Poston Wed, 24 Sep 2008 9:48 am

ahh man!!

rolled here..

Instead I reference the alias a.cd _ branch for example I referenciei the cursor rg1.cd _ branch.

and it worked!

hehe thanks for the help!!!
dmaranini
Location: sao paulo

Poston Wed, 24 Sep 2008 10:06 am

Blzera.. that right there.
Anything, count us in.
Trevisolli
Location: Araraquara - SP

Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP


  • See also
    Replies
    Views
    Last Post


      Return to PL/SQL

      Who is online

      Users browsing this forum: Google [Bot], Google Adsense [Bot] and 13 guests