› Fóruns › SQL e PL/SQL › Procedure no Oracle › Procedure no Oracle
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.