Type x Ref Cursor ( retornar um Type como um REF ).

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
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Pessoal, boa tarde.

Cenário: Oracle 9i x .NET

Dúvida: Gostaria de saber se existe a possibilidade (se alguém já passou por isso), de se pegar um Type ( PL/SQL Table ) e retornar as informações para o .NET como um REF CURSOR?

Eu sei que, se eu ler o TYPE, popular uma TEMP TABLE, daí consigo retornar os valores da TEMP para o .NET via REF CURSOR.

Agora, pegar o TYPE PL/SQL e retorná-lo diretamente, como um REF CURSOR, teria como?

Muito obrigado.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Beleza Trevisolli?

Você pode sim passar dados de uma nested table (sql type) por parâmetro de saída através de um ref cursor. Já usei para montar um resultset para um programa java usar. O PL/SQL fazia leitura e cálculos sobre os dados numa nested table e passava para a interface web exibir as linhas como saída, através de um ref cursor.
O AskTom (http://asktom.oracle.com/pls/asktom/f?p ... 6014735810)
mostra como fazer isso para alguns exemplos simples, de onde você pode evoluir a partir de seus requisitos.

Você vai fazer o seu "open <cursor> for <sql>" e retornar como parâmetro o ref cursor normalmente, porém o seu sql vai ser do tipo "select * from table(minha_nestedtable)". Em vez de usar uma tabela de banco de dados vai ler direto da tabelinha em memória.

Há várias formas de montar sua nested table também.
- O Tom fez por loop em programa, para simplificar o exemplo.
- Você pode utilizar queries sql buscando de tabelas no bd, usando CAST e MULTISET para transformar no type e carregar a nested table.
http://download.oracle.com/docs/cd/B193 ... SQLRF00613
- Ou ainda fazer transformações através de table functions.
http://download.oracle.com/docs/cd/B193 ... sthref2345
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, show!
Valeu pela dica. Vou fazer os testes aqui e, posto pra vocês!
Responder
  • Informação
  • Quem está online

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