Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Forms
Forms Forum d'entraide sur Oracle Forms
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/05/2006, 13h36   #1
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Par défaut [forms 9][10gR1] instruction spécifique 10g qui ne compile pas

Bonjour,

Sous forms 9 je ne peux pas compiler un écran à cause de l'erreur stipulant que :
Citation:
l'identifiant REGEXP_REPLACE doit être déclaré
Voici le code associé à cette erreur qui se situe (vous l'aurez deviné) sur la ligne du SELECT :
Code :
1
2
3
4
5
6
  -- 1/ substitution du tag <VOLUME>
  SELECT REGEXP_REPLACE(LC_formule, '<VOLUME>', NVL(:B2.TOT_SIM_VOL,0))
  INTO   LC_formule
  FROM   B03FS
  WHERE  T81_FAM = :B5.T81_FAM
  AND    MS_CODE = :B5.MS_CODE;
Un de mes collègues m'a dit que je ne rencontrerai pas cette erreur si j'utilise le package EXEC_SQL dans la mesure où ce même code s'exécute parfaitement sous SQLPlus.

A quoi est due cette erreur ?
Merci d'avance.

PS : c'est en consultant la doc "SQL Reference 10g Release 1" que j'ai trouvé cette fonction.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 13h46   #2
Rédacteur

 
Avatar de SheikYerbouti
 
Inscription : mai 2003
Messages : 6 533
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 6 533
Points : 6 469
Points : 6 469
La version du PL/SQL de Forms a toujours un train de retard sur celle du noyau. C'est la raison pour laquelle certaines nouvelles instructions ne sont pas reconnues par le moteur PL/SQL de Forms.

Vous pouvez utiliser une fonction stockée qui retrournera la valeur à Forms.
__________________
Rédacteur Oracle (Oracle ACE)
Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche
Je ne réponds pas aux questions techniques par MP
Blogs: Forms-PL/SQL-J2EE - Forms Java Beans
SheikYerbouti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 14h00   #3
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Citation:
Envoyé par SheikYerbouti
La version du PL/SQL de Forms a toujours un train de retard sur celle du noyau.
Sans compter que ici tu utilises une instruction 10g avec un forms 9i, donc même si la version du PL/SQL de forms n'avait pas de retard sur le noyau cela ne fonctionnerait pas !
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 14h43   #4
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Dans ce cas précis l'usage de REGEXP_REPLACE est inutile... REPLACE suffit
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2006, 16h07   #5
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Citation:
Envoyé par Fred_D
Dans ce cas précis l'usage de REGEXP_REPLACE est inutile... REPLACE suffit
Tout à fait d'accord : j'ai (TROP) simplifié mon exemple.
Et là :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT REGEXP_INSTR(FORMULE, LC_PATTERN_SPEC, 1, LN_I, 0) SPEC_DEBUT,
             REGEXP_REPLACE(
               REGEXP_SUBSTR(FORMULE, LC_PATTERN_SPEC, 1, LN_I),
               LC_PATTERN_SPEC,
               'SELECT SPEC_\1 ' || CHR(10) ||
               'FROM   B2820 R,' || CHR(10) ||
               '       B2821 S' || CHR(10) ||
               'WHERE  R.SPEC_CODE  = S.SPEC_CODE ' || CHR(10) ||
               'AND    R.ST_CODE    = ''' || LC_ST_CODE || ''' ' || CHR(10) ||
               'AND    NVL(R.CL_CODE, ''@~@##@]@'') = NVL(' || DECODE(LC_CL_CODE, NULL, 'NULL', LC_CL_CODE) || ', ''@~@##@]@'') ' || CHR(10) ||
               'AND    S.T37_CODE   = ''\2'' '
              ) SPEC_STR
      INTO   LN_DEBUT,
             LC_FORMULE
      FROM   B03FS
      WHERE  T81_FAM = 'Q'
      AND    MS_CODE = 'X00002';
Citation:
Envoyé par plaineR
Sans compter que ici tu utilises une instruction 10g avec un forms 9i, donc même si la version du PL/SQL de forms n'avait pas de retard sur le noyau cela ne fonctionnerait pas !
Je pensais que cet ensemble d'instructions était apparu avec la version 9 (je suis loin d'avoir lu toute la doc 10gR1 alors la doc 9i...)

En conclusion et avant que je tag résolu, est-ce que cela signifie que pour utiliser ces instructions je dois :
- soit utiliser EXEC_SQL (et c'est la base exécute le code)
- soit utiliser une procédure stockée (idem),
- soit utiliser une version de forms plus récente (si toutefois la plus récente permet d'utiliser ces instructions en natif) ?
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2006, 12h06   #6
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Avec le package EXEC_SQL, ces instructions peuvent être exécutées sans souci.

Thanks boys.
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h52.


 
 
 
 
Partenaires

Hébergement Web