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

Oracle Discussion :

Forms 6i : erreur avec FORMS_DDL


Sujet :

Oracle

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Points : 46
    Points
    46
    Par défaut Forms 6i : erreur avec FORMS_DDL
    Bonjour,

    Je travaille sous Windows XP, base Oracle 8.1.5 et Forms 6i.

    Je souhaite, dans un Forms, créer une séquence, dont le nom est dépendant de plusieurs paramètres, via un appel à FORMS_DDL.
    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
               BEGIN
                  Var_Commande := 'CREATE SEQUENCE ' || Var_Nom_Sequence || ' INCREMENT BY 1 START WITH 1 MAXVALUE 999999999999';
                  FORMS_DDL(Var_Commande);
                  IF NOT FORM_SUCCESS THEN
      	                v_retour := Alert_Fonctionnelle(1122,Var_Nom_Sequence,'','');
      	                Go_Item('BL_CTRL1.t_journee');
     	                  RAISE Form_Trigger_Failure;
                  END IF;  
                END;
    Or, je tombe toujours en erreur, et la séquence n'est pas créée !!
    Si je rajoute l'affichage de SQLERRM juste après l'appel à FORMS_DDL, il me dit que c'est une erreur ORA-0000 : normal, successful completion... : : :

    Quelqu'un a une idée ??

    Je précise que j'avais prévu de lancer la création de la séquence via un EXECUTE IMMEDIATE, mais que Forms 6i ne connaît pas cette commande.

    Merci par avance !

  2. #2
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    Bon, en fait, il semble que ce soit un problème de privilèges.

    Même lorsque je fais exécuter la commande de création de la séquence via un EXECUTE IMMEDIATE contenue dans une fonction basée, appelée depuis le Forms, j'ai le droit à la même erreur : ORA-1031 : privilèges insuffisants.

    De quoi celà peut_il venir, et quels privilèges dois-je rajouter ??

    Pour info, voici le code de ma fonction basée :

    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
    18
    19
    20
    21
     
    CREATE OR REPLACE FUNCTION CRE_Sequence(Par_Nom_Sequence   IN   ALL_SEQUENCES.Sequence_Name%TYPE,
                                            Par_Increment      IN   ALL_SEQUENCES.Increment_By%TYPE,
                                            Par_StartWith      IN   ALL_SEQUENCES.Min_Value%TYPE,
                                            Par_MaxValue       IN   ALL_SEQUENCES.Max_Value%TYPE,
    										Par_erreur OUT VARCHAR2) RETURN NUMBER IS
     
    Var_Commande        VARCHAR2(250);
     
    BEGIN
         Var_Commande := 'CREATE SEQUENCE PIAF_ADM.' || Par_Nom_Sequence || ' INCREMENT BY ' || Par_Increment || ' START WITH ' || Par_StartWith || ' MAXVALUE ' || Par_MaxValue;
         EXECUTE IMMEDIATE Var_Commande;
     
         RETURN(1);
     
    EXCEPTION
      WHEN Others THEN
         par_erreur := sqlerrm;
        RETURN(-1);
    END CRE_Sequence;
    /
    Alors que si je prends le code de cette fonction et que je l'exécute sous TOAD, ça marche.................................................

  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
    Je suppose que le droit de créer une séquence t'es donné via un rôle. Oracle n'en tient pas compte en PL/SQL ou en sql dynamique. Il faut donc que le priviliège te soit donner directement.

  4. #4
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 53
    Points : 46
    Points
    46
    Par défaut
    C'est exactement ça !
    J'ai affecté le privilège "CREATE USER" directement à mon user (alors qu'il l'avait déjà via un rôle), et ça marche.

    Merci beaucoup pour l'explication et bravo !

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

Discussions similaires

  1. Forms erreur avec collection
    Par anrek dans le forum Forms
    Réponses: 0
    Dernier message: 09/01/2011, 17h36
  2. Réponses: 3
    Dernier message: 12/03/2010, 13h24
  3. Visualiser l'erreur avec forms 10g
    Par fratton dans le forum Débuter
    Réponses: 0
    Dernier message: 22/09/2009, 14h17
  4. [DataBinding] erreur avec form designer
    Par shadowmoon dans le forum Windows Forms
    Réponses: 1
    Dernier message: 01/10/2008, 11h36
  5. Erreur avec les forms
    Par saserv dans le forum Ruby on Rails
    Réponses: 1
    Dernier message: 29/03/2008, 21h16

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