Cursor que compila no banco não compila no Forms

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
mauriciodotto
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 17 Mar 2006 9:38 am
Localização: Porto Alegre/RS
Mauricio Araujo Dotto
Analista/Desenvolvedor Oracle
CWI Informática RS

Olha aí pessoal:

Eu tenho um problema: existe uma procedure (código abaixo) no meu banco que compila normalmente; acontece que eu estou tentanto criar esta mesma procedure dentro de um form no qual estou trabalhando, mas o Forms não compila um cursor, dando a seguinte mensagem de erro.
Se algum de vocês por acaso já tenha passado por este problema, e lembre da solução, podem me contatar que eu agradeço.

Código do cursor que roda no banco mas não no Forms

Selecionar tudo

 cursor c_peri is
      select *
      from  (select x.cd_periodo,
                    x.cd_parcela,
                    rownum linha
             from   (SELECT nvl(pass_cd_periodo,-1) cd_periodo,
                            pass_cd_parcela         cd_parcela
                     FROM   parcela_assinatura,
                            periodo_assinatura
                     WHERE  pass_cd_jornal      = pi_cd_jornal
                     AND    pass_cd_ass         = pi_cd_ass
                     AND    perass_cd_jornal    = pass_cd_jornal
                     AND    perass_cd_ass       = pass_cd_ass
                     AND    perass_cd_periodo   = pass_cd_periodo
                     AND    pass_dt_recebimento is NULL
                     AND    perass_id_cortesia  = 'N'
                     order  by 1,2   ) x)
      where linha = pi_nr_parcela; 
mauriciodotto
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 17 Mar 2006 9:38 am
Localização: Porto Alegre/RS
Mauricio Araujo Dotto
Analista/Desenvolvedor Oracle
CWI Informática RS

Mais uma correção: o problema ocorre com o Order by 1,2 dentro do cursor; abaixo, segue a descrição do erro:

Imagem
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

Isso é a coisa mais normal meu chapa!
Pois o PL/SQL do forms é diferente do PL/SQL do banco.

Veja isso:

Selecionar tudo

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
PL/SQL Release 10.1.0.2.0 - Production
CORE    10.1.0.2.0      Production
TNS for Linux: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production

SQL> 
Estou usando a versão 10.1.0.2.0 para o PL/SQL no banco.
E no forms, fui lá no "About" e vi que a versão do meu PL/SQL do forms é PL/SQL Version 8.0.6.0.0 (Production).

É uma grande diferença!
A maioria das coisas funciona, mas as features NOVAS talvez não.

Eu já tive um caso exatamente igual o seu. O PL/SQL do forms não aceitava de jeito nenhum o ORDER BY no fim de um select bem complexo. No SQL*Plus e nas packages de banco, funcionava perfeitamente...

Provavelmente, este é o seu caso aí...
:-o

Como você pode solucionar?
Talvez, você cria uma VIEW e faz select nessa view. Já que a view é o no banco, não terá problemas pra criar... E o Forms, você simplesmente usa ela. :-) :-o
mauriciodotto
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 17 Mar 2006 9:38 am
Localização: Porto Alegre/RS
Mauricio Araujo Dotto
Analista/Desenvolvedor Oracle
CWI Informática RS

Realmente!

É isso mesmo, DR_GORI: acertou na mosca; minha versão PL/SQL do banco é 9.2.0.6.0, enquanto a do Forms é 8.0.6.3.0.

Muchas gracias!
Responder
  • Informação
  • Quem está online

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