Parâmetro do tipo OUT SYS_REFCURSOR

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Tenho algumas Packages, com Procedures dentro. E todas ou quase, tem um Parâmetro cursor, assim

CUR_DADOS OUT SYS_REFCURSOR

Abrindo o body dessas packages, todas as Procs tem

Selecionar tudo

Open CUR_DADOS for
   select campo1, campo2
   from Table1
   where campo1 = "alguma coisa";
Eu não vejo nenhuma ação, como um select into ou coisa assim, para o dados cursor.

Como eu utilizo isso?
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

É que depois de abrir o cursor, você vai ver que tem um FETCH um pouco depois.
É ali que ele salva os dados retornados do cursor numa variável.
pnet1
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 73
Registrado em: Qui, 23 Jan 2020 9:12 pm

Nenhuma tem fetch. Veja essa, por exemplo, no body da package, já que no header é só declaração:

Selecionar tudo

PROCEDURE SP_OBTERDEPARTAMENTO(
        CUR_DADOS   OUT SYS_REFCURSOR 
  )
  IS
  BEGIN
        OPEN CUR_DADOS FOR
            SELECT T.PKND_DEPARTAMENTO AS Codigo, 
                   T.ATSV_DESCRICAO AS Descricao,
                   T.PKDT_INICIO_DEPARTAMENTO AS DtInicio, 
                   T.ATSV_USUARIO AS Usuario
              FROM TAKB103T_DEPARTAMENTO T
              WHERE T.ATDT_FIM_DEPARTAMENTO IS NULL
              ORDER BY T.ATSV_DESCRICAO ASC;
              
  END SP_OBTERDEPARTAMENTO;
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Esta procedure está fazendo o OPEN e uma outra que chamou esta está fazendo o FETCH.
Então tem ver quem está chamando essa procedure.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes