IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

[forms 9][10gR1] instruction spécifique 10g qui ne compile pas


Sujet :

Forms Oracle

  1. #1
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    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 :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  2. #2
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    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

  3. #3
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    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 862
    Points : 3 609
    Points
    3 609
    Par défaut
    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.

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Dans ce cas précis l'usage de REGEXP_REPLACE est inutile... REPLACE suffit

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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) ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Avec le package EXEC_SQL, ces instructions peuvent être exécutées sans souci.

    Thanks boys.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un code qui ne compile pas
    Par muslim1987 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 19/06/2008, 11h55
  2. 10 lignes C++ avec templates qui ne compilent pas,
    Par FrigoAcide dans le forum C++
    Réponses: 9
    Dernier message: 18/02/2008, 21h10
  3. exemple qui ne compile pas
    Par Edta dans le forum AWT/Swing
    Réponses: 10
    Dernier message: 01/11/2006, 13h58
  4. sscanf - syntaxe qui ne compile pas
    Par xilebo dans le forum C
    Réponses: 4
    Dernier message: 12/09/2006, 13h41
  5. [C# 2.0] Un exemple de classe générique qui ne compile pas.
    Par Pierre8r dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo