COnsultar Function em um cursor

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

Bom Dia Pessoal

Estou com um problema por aqui.
PReciso fazer uma consulta de uma função que está direto no banco.
1º Minha tela é de consulta.
2º Tenho um campo chamado ds_informação. PReciso fazer pesquisa por ele, com o LIKE
3º Tenho uma função pronta que traz esse campo certinho.
4º As tabelas existentes não retornam o total certo da informação.
5º NO Botão consultar da tela, faz um cursor dentro do declare.

Gostaria de saber, se tem como eu fazer essa consulta direto no function pronto? E como usar o LIKE nele.

Fiz no relatorio é deu certo desse jeito:

Selecionar tudo

:result := f_descricao_pf(p_pf => :p_pf);
Porém no forms nem sei onde colocar ou como fazer.

Obrigada pela ajuda!!!
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Selecionar tudo

Select f_descricao_pf(p_pf => :p_pf)
  From Dual
o retorno do seu select você pode usar como um cursor normal
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

v_retorno := f_descricao_pf(p_pf => :p_pf) ;

também da
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

Fiz esse select
e deu esse erro
Numero incorreto de tipos de argumentos na chamada para f_descricao_pf
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Qual é a assinatura da sua função?
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

Como assim assinatura?
Nessa função, esse é o nome:
Function F_descricao_PF(p_pf varchar).
Seria isso?
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Tenta:

Selecionar tudo

Select f_descricao_pf(:p_pf)
  From Dual
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

BOm Fiz assim
cursor c2 is
Select f_descricao_pf(r1.cd_pessoafisica )
From Dual;
r2 c2%rowtype;
E funciona sem problema.
Nessa função ele retorna um v_descricao.
Preciso agora fazer um Like dentro do cursor com esse v_descricao. Como eu faço??

Obrigada
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Eu não criaria 2 cursores...
faria algo proximo a isto:

Selecionar tudo

select consultadecolunas
  from tabelas
 where filtrolike like '%'||f_descricao_pf(r1.cd_pessoafisica )||'%'
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

gfkauer fiz dessa forma

Selecionar tudo

and f_descricao_pf(cd_pessoafisica ) like '%'||:ds_descricao||'%' 
Ta fazendo, legal. Mais com um detalhe. Se eu coloco descrição mais completa.
POr exemplo.
Pessoa - ele diz que não possui nada.
Se coloco
Pe - ele pesquisa tranquilo. E saia no relatorio a PESSOA;
priajf
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 297
Registrado em: Ter, 21 Dez 2010 8:45 am
Localização: Florianopolis
Priscila Fernandes

Deu certo.
Dessa forma mesmo. Mais não entendi porque na primeira vez ele não acho. Agora deu tudo certo.
Obrigada pela ajuda como sempre.

Att
Responder
  • Informação
  • Quem está online

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