Olá Cleber,
 
Deve existir algo errado no procedimento.
 
Tente o exemplo abaixo:
 
[]'s
 
Create Or Replace Package Emgr.Pkg_Teste
Is
 
    Type Robj Is Record(
         Owner      Varchar2(30)
       , Table_Name Varchar2(30));
    
    Type Type_Obj Is Table Of Robj
             Index By Binary_Integer;
    
    Tab_Obj  Type_Obj ;
             
    Function Cursor
       Return Tab_Obj%Type ;  
 
End; 
/
Create Or Replace Package Body Emgr.Pkg_Teste
Is
    Function Cursor
        Return Tab_Obj%Type  
    Is    
        Nidx  Number(10) := 0  ;
        X Type_Obj ;    
        Cursor Ctab Is 
           Select Owner
                , Table_Name 
            From  All_Tables
            Order By
                  Owner
                , Table_Name ;
    Begin
         For Rtab In Ctab
         Loop
             Nidx := Nidx + 1 ;
             X(Nidx).Owner      := Rtab.Owner ;
             X(Nidx).Table_Name := Rtab.Table_Name ;
         End Loop ;
         Return X ;
    End ;      
End ;     
/
 
Set Serveroutput On
Exec Dbms_Output.Enable( 10000000 );
 
Declare
      X Pkg_Teste.Tab_Obj%Type ;
Begin
   X:= Pkg_Teste.Cursor ;
   For Nidx In X.First..X.Last
   Loop
       If  X.Exists(Nidx)
       Then
           Dbms_Output.Put_Line(X(Nidx).Owner||'.'||X(Nidx).Table_Name); 
       End If ;
  End Loop ;
End ;          
 
 
 
 

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] Behalf Of Cleber 
Roberto Marques
Sent: quinta-feira, 30 de junho de 2005 11:41
To: [email protected]
Cc: Rogerio Tanaka
Subject: [oracle_br] PL/SQL Table


Pessoal, segue abaixo uma dúvida sobre uma questão em PL/SQL de um analista 
programador da empresa.



Eu sugeri para o processo a utilização de uma global temporary table, mas 
segundo o escopo não é permitido.



Se alguém tiver alguma idéia...  



Obrigado,



Obs:

Ambiente: 

            Oracle 9.2.0.5

            Linux Red Hat 9





Att.

Cleber R. Marques

Administrador de Bancos de Dados





---------

---------

---------



Estou enfrentando o seguinte problema  para retornar os dados de uma Stored 
Procedure:



Para retornar os dados da Procedure estou utilizando um cursor do tipo:



CREATE OR REPLACE PROCEDURE Op_Ppt_Getcustomannouncement1

    (

      cursor0       OUT sys_refcursor,

    )



Eu precisava retornar da procedure uma estrutura do tipo:



TYPE r_SelectedCustomAnnounce IS RECORD (

      codAng CUSTOMANNOUNCEMENTGROUP.codAng%TYPE,

      codCan CUSTOMANNOUNCEMENT.codCan%TYPE,

      numCanOrder CUSTOMANNOUNCEMENT.numCanOrder%TYPE,

      strCanPhraseString CUSTOMANNOUNCEMENTPHRASESTRING.strCapPhraseString%TYPE,

      qttCanMaxAnnounces CUSTOMANNOUNCEMENT.QTTCANMAXCOUNT%TYPE,

      codCat CUSTOMANNOUNCEMENTATTRIBUTE.CODCAT%TYPE,

      strCatAttribute CUSTOMANNOUNCEMENTATTRIBUTE.STRCATATTRIBUTE%TYPE,

      strCatAttributeValue CUSTOMANNOUNCEMENTATTRIBUTE.STRCATATTRIBUTEVALUE%TYPE

   );

   v_SelectedCustomAnnounce r_SelectedCustomAnnounce;



TYPE r_SelectedCustomAnnounceTable IS TABLE OF r_SelectedCustomAnnounce INDEX 
BY BINARY_INTEGER;



Esse Type Record seria uma estrutura com varios indices dentro que pode ser 
acessado da seguinte forma:



v_SelectedCustomAnnounce[indice].codAng



O que ocorre é que não é possível abrir o cursor0 e retornar todos os dados da 
estrutura. Com esse Cursor é possivel retornar apenas o primeiro registro da 
estrutura, uma vez que essa estrutura não é uma "tabela".



Há algumas Restrições no escopo do projeto relacionadas a não utilizar uma 
tabela temporária do tipo Temporary Globalization Table.



Poderia se utilizar uma tabela temporária do tipo Pl/Table, porém ao se fazer o 
Select nessa tabela e retornar pelo cursor0 ele retorna apenas o primeiro 
registro.



Alguém tem alguma idéia?



Att.

Tanaka



---------

---------

---------





[As partes desta mensagem que não continham texto foram removidas]



______________________________________________________________________

Cancelar assinatura...: [EMAIL PROTECTED]
Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] 
Fernanda Damous [EMAIL PROTECTED] 
Alisson Aguiar [EMAIL PROTECTED]
______________________________________________________________________
http://br.groups.yahoo.com/group/oracle_br/ 
______________________________________________________________________

Sair da Lista...: [EMAIL PROTECTED] 

<?---- LSpots keywords ?><?---- HM ADS ?>

  _____  

Links do Yahoo! Grupos


*       Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
  

*       Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> 
  

*       O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo! <http://br.yahoo.com/info/utos.html> . 




[As partes desta mensagem que não continham texto foram removidas]



______________________________________________________________________

Cancelar assinatura...: [EMAIL PROTECTED]
Moderadores da lista....:Dorian Anderson Soutto [EMAIL PROTECTED] 
Fernanda Damous [EMAIL PROTECTED] 
Alisson Aguiar [EMAIL PROTECTED]
______________________________________________________________________
http://br.groups.yahoo.com/group/oracle_br/ 
______________________________________________________________________

Sair da Lista...: [EMAIL PROTECTED] 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a