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