Pular para o conteúdo

Fóruns SQL e PL/SQL Procedure no Oracle Procedure no Oracle

#91129
fsitja
Participante

    No Oracle você precisaria declarar um parâmetro de saída na procedure
    ou usar uma function. Há pelo menos duas alternativas:

    1 – Usar um ref cursor para retornar um resultset para o client, ou aplicação
    que chamou a procedure. O chamador vai fazer o “fetch” dos dados e
    usá-los como precisar. É retornada apenas uma referência (“ponteiro”),
    mais flexível e consome menos recursos do que a alternativa 2.

    2 – Retornar uma nested table / varray / associative array (index-by
    table). Nesse caso você precisa criar um type do tipo necessário, dar o
    fetch na table e retornar a estrutura em memória, pronta para ser usada.
    Vai, por consequência, utilizar mais memória e não é recomendado se o
    seu retorno tiver muitas milhares de linhas.

    Pode-se usar uma function no lugar da procedure também, pois ela
    retorna dados sem precisar de parâmetro OUT. Peguei um exemplo que
    eu tinha feito outro dia para pipelined table function, um pouco mais
    complexo, mas que conceitualmente serve para a mesma coisa. Testei
    usando a view v$version, substitua pela sua tabela.

    Abraços,
    Francisco.