[EMAIL PROTECTED]> create or replace procedure p ( p_refx out 
sys_refcursor )
   2  is
   3  begin
   4     open p_refx for select * from emp;
   5  end;
   6  /

Procedure created.

[EMAIL PROTECTED]> show error
No errors.
[EMAIL PROTECTED]>
[EMAIL PROTECTED]> var x refcursor
[EMAIL PROTECTED]>
[EMAIL PROTECTED]> exec p(:x )

PL/SQL procedure successfully completed.

[EMAIL PROTECTED]>
[EMAIL PROTECTED]> print x

         EMPNO ENAME      JOB                 MGR HIREDATE
------------- ---------- --------- ------------- -------------------
          7369 SMITH      CLERK              7902 17/12/1980 00:00:00
          7499 ALLEN      SALESMAN           7698 20/02/1981 00:00:00
          7521 WARD       SALESMAN           7698 22/02/1981 00:00:00
          7566 JONES      MANAGER            7839 02/04/1981 00:00:00
          7654 MARTIN     SALESMAN           7698 28/09/1981 00:00:00
          7698 BLAKE      MANAGER            7839 01/05/1981 00:00:00
          7782 CLARK      MANAGER            7839 09/06/1981 00:00:00
          7788 SCOTT      ANALYST            7566 19/04/1987 00:00:00
          7839 KING       PRESIDENT               17/11/1981 00:00:00
          7844 TURNER     SALESMAN           7698 08/09/1981 00:00:00
          7876 ADAMS      CLERK              7788 23/05/1987 00:00:00
          7900 JAMES      CLERK              7698 03/12/1981 00:00:00
          7902 FORD       ANALYST            7566 03/12/1981 00:00:00
          7934 MILLER     CLERK              7782 23/01/1982 00:00:00

14 rows selected.



Nícolas Santana wrote:
> Vc tem algum exemplo para o 9i? Pode ser bem simples mesmo...
> 
> 
> 
> 
> 
> 
>   ----- Original Message ----- 
>   From: Salvio Padlipskas 
>   To: '[email protected]' 
>   Sent: Monday, November 21, 2005 3:21 PM
>   Subject: RES: [oracle_br] Procedure (ou Function) retornando um Select
> 
> 
>   Leonardo,
> 
>   Existem diferenças nas versões, pois na 9i em diante vc tem
>   a possibilidade de utilizar o SYS.REFCURSOR.
> 
>   Segue abaixo um bom exemplo em 8i
> 
>   [ ]'s
>   Salvio Padlipskas
> 
>   ****************************************************************************
>   *************************
>   ****************************************************************************
>   *************************
>   ****************************************************************************
>   *************************
>   create or replace package pkg_teste  as
>   type refcur is ref cursor;
>   end;
>   /
> 
>   create or replace function fun_teste( p_cod_emp in number) return
>   pkg_teste.refcur  as
>   l_cursor pkg_teste.refcur;
>   begin
>         open l_cursor for select * from s_emp where cod = p_cod_emp;
>         return l_cursor;
>   end;
>   /
> 
> 
>   variable x refcursor
>   set autoprint on
>   begin
>         :x := fun_teste(10);
>   end;
>   /
>   ****************************************************************************
>   *************************
>   ****************************************************************************
>   *************************
>   ****************************************************************************
>   *************************
> 
> 
> 
>   -----Mensagem original-----
>   De: leonardosmartins [mailto:[EMAIL PROTECTED]
>   Enviada em: segunda-feira, 21 de novembro de 2005 15:06
>   Para: [email protected]
>   Assunto: [oracle_br] Procedure (ou Function) retornando um Select
> 
> 
>   Pessoal,
> 
>   Alguém teria um exemplo para me mandar de uma procedure (ou function) 
>   que simplesmente retornasse um select (um recordset)?
> 
>   Tentei montar algo aqui mais não deu certo.
>   Eu queria algo que não precisasse passar nada como parâmetro. Tentei 
>   montar um procedure simples utilizando o execute imediate mais não deu 
>   certo.
> 
>   Grato pela ajuda.
>   Leonardo Martins
> 
> 
> 
> 
> 
>   ----------------------------------------------------------------------------
>   ----------------------------------------------
>   Atenção! As mensagens deste grupo são de acesso público e de inteira
>   responsabilidade de seus remetentes.
>   Acesse: http://www.mail-archive.com/[email protected]/ 
>   ----------------------------------------------------------------------------
>   ----------------------------------------------______________________________
>   _______________________________________
>   Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
>   Links do Yahoo! Grupos
> 
> 
> 
> 
> 
> 
> 
> 
>   [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
>   
> --------------------------------------------------------------------------------------------------------------------------
>   Atenção! As mensagens deste grupo são de acesso público e de inteira 
> responsabilidade de seus remetentes.
>   Acesse: http://www.mail-archive.com/[email protected]/ 
>   
> --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
>   Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 
> 
> 
>         Yahoo! Grupos, um serviço oferecido por: 
>               PUBLICIDADE
>                 
>        
> 
> 
> ------------------------------------------------------------------------------
>   Links do Yahoo! Grupos
> 
>     a.. Para visitar o site do seu grupo na web, acesse:
>     http://br.groups.yahoo.com/group/oracle_br/
>       
>     b.. Para sair deste grupo, envie um e-mail para:
>     [EMAIL PROTECTED]
>       
>     c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do 
> Serviço do Yahoo!. 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
> --------------------------------------------------------------------------------------------------------------------------
> Atenção! As mensagens deste grupo são de acesso público e de inteira 
> responsabilidade de seus remetentes.
> Acesse: http://www.mail-archive.com/[email protected]/ 
> --------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
> Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
> Links do Yahoo! Grupos
> 
> 
> 
> 
>  
> 
> 
> 


--------------------------------------------------------------------------------------------------------------------------
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------_____________________________________________________________________
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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