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 :

Trigger base dynamique


Sujet :

Forms Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 92
    Par défaut Trigger base dynamique
    Bonjour

    j'ai un petit soucis dans un trigger base

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CREATE OR REPLACE TRIGGER T_INSERTFF
    AFTER INSERT ON FF
    FOR EACH ROW
    DECLARE
    l_cursor varchar2(100);
    BEGIN
    l_cursor:='INSERT INTO TEST SELECT :NEW.FFCODE FROM DUAL';
    EXECUTE IMMEDIATE l_cursor;
    END;
    /
    Lorsque j'insert une donnée dans la table FF j'ai une erreur

    ORA-01008: Toutes les variables ne sont pas liées
    ORA-06512: à "SYLOGI.T_INSERTFF", ligne 5
    ORA-04088: erreur lors d'exécution du déclencheur 'SYLOGI.T_INSERTFF'


    Et si je le fais directement en faisant l'insertion directement ca
    fonctionne sans probleme

    si je remplace :NEW.FFCODE par 'test' ca fonctionne
    Mon but est de récupérer le nom des champs dans une
    table pour inserer dans une autre un peu comme la
    fonction NAME_IN de Forms

    Merci d'avance

    [Jaouad] Merci d'utiliser les balises code et Quote

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pourquoi EXECUTE IMMEDIATE ????

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE OR REPLACE TRIGGER T_INSERTFF
    AFTER INSERT ON FF
    FOR EACH ROW
    BEGIN
    INSERT INTO TEST VALUES :NEW.FFCODE;
    END;
    /

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par cyberyan
    Mon but est de récupérer le nom des champs dans une
    table pour inserer dans une autre un peu comme la
    fonction NAME_IN de Forms
    j'ai pas compris

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 92
    Par défaut
    j'ai du mal a exprimer ce que je veux

    en fait j'ai une table audit_ref(table_ref varchar2(10),champ varchar2(30))
    avec les enregistrement suivant
    TABLE_REF CHAMP
    ---------- -------
    FF FFCODE
    FF FFDTDB
    FF FFDTDF
    mon but est dans le trigger de recuper ceci pour
    construire l'insertion dans une autre table de ces données

    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
    CREATE OR REPLACE TRIGGER T_INSERTFF
    AFTER INSERT ON FF
    FOR EACH ROW
    DECLARE
     tab_champ IS TABLE OF VARCHAR2(30);
     l_cursor varchar2(1000);
    BEGIN
    SELECT CHAMP BULK COLLECT INTO tab_champ 
    FROM AUDIT_REF WHERE TABLE_REF='FF';
     
    FOR i IN tabl_champ.FIRST.. tab_champ.LAST LOOP
      INSERT INTO TEST VALUE valeur du champ contenu dans tab_champ(i);
    END LOOP;
    END;
    /

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 92
    Par défaut
    Personne peut m'aider

    la je seche vraiment

    Merci d'avance

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    il y a pleins d'exemple de SQL dynamique, essaye donc quelque chose et si tu as un souci reprécise ta question

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 92
    Par défaut
    Je vais je mettre a un niveau supérieur et je vais construire dynamiquement le trigger
    comme ca en plus j'aurais une trace

    Merci pour tout


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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/11/2008, 17h54
  2. Tous les triggers base oracle
    Par hichcasa dans le forum PL/SQL
    Réponses: 3
    Dernier message: 02/10/2008, 15h12
  3. Definir une base Dynamique pour un ADODC
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/08/2006, 15h23
  4. Réponses: 1
    Dernier message: 03/07/2006, 16h44
  5. [Oracle 9i] Trigger base de données
    Par Herveg dans le forum Oracle
    Réponses: 7
    Dernier message: 21/12/2005, 15h17

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