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

PL/SQL Oracle Discussion :

Long et Trigger


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Long et Trigger
    Est-il possible d'utiliser une variable de type LONG dans un Trigger.
    Si non exist-il un contournement ?

    Merci beaucoup.

  2. #2
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    Sur un plan de vue purement technique
    en 10G


    Code sql : 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
    22
    23
    24
     
     
      1   CREATE OR REPLACE TRIGGER long_trig
      2  BEFORE UPDATE
      3  ON emp
      4  DECLARE
      5   vMsg long := 'UPDATE EMP with variable LONG';
      6  BEGIN
      7    dbms_output.put_line(vMsg);
      8* END statement_level;
      9  /
     
    Trigger created.
     
     
     
     INSERT INTO emp (empno,ename) VALUES (1234,'TITI');
     
    1 row created.
     
     UPDATE emp SET ename = 'GROS MINET' where ename='TITI';
    UPDATE EMP with variable LONG
     
    1 row updated.


    la reponse est oui

    Sur d'autres plans....

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut

  4. #4
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    Qu'est ce qui t'a motivé a poser la question?
    J'ai jamais testé mais j'ai toujours cru que c'etait impossible.
    http://download.oracle.com/docs/cd/B...tr.htm#1006228 (dans la section ''Trigger Restrictions on LONG and LONG RAW Datatypes'')
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    La raison de cette question est la suivante :
    Dans un LONG je récupère une chaine en HEXA que je dois convertir en ASCII avant de l'enregistrer dans la table. Et je comptai faire ce traitement dans un trigger.

    Voila
    A+

  6. #6
    Membre confirmé Avatar de rvfranck
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    746
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 746
    Points : 534
    Points
    534
    Par défaut
    J'aimerai bien comprendre...
    Si j'ai bonne mémoire un trigger est lui même stocké dans un LONG, alors comment se fait il qu'il soit possible de declarer un LONG dans un trigger?

    Celà marche, dans l'exemple ci dessus, peut être parce que le corps du trigger n'est pas conséquent? peut être la variable LONG "vMsg" de l'exemple est vu pas le système comme un varchar2 ou je ne sais trop quoi?

    Un expert peut il m'éclairer svp!!!
    "Celui qui reconnaît consciemment ses limites est le plus proche de la perfection." Johann Wolfgang

  7. #7
    Membre expérimenté Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Points : 1 332
    Points
    1 332
    Par défaut
    les type LONG est utilisé pour les données non structurées: images bin, documents et sont fournis a des fin de compatibilité descendates

    Code sql : 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
    22
    23
    CREATE OR REPLACE TRIGGER SCOTT.long_trig
       BEFORE UPDATE
        ON SCOTT.EMP 
    DECLARE
         vMsg long := 'UPDATE EMP with variable LONG 
         sfdfgfgggggggggggggggggggggg $
         fggggggggggggggggggggggggggggggggggg
         sfdsfdgsdfgsdfg fsdgdfgsdfgfdg fdgdfsgsdfgdfgdfg 
         dfgdfsgdfgdfg fgdfgdfgd dfgdfgdfg fgdfgdfg fgdfg 
         ::;$^p“pkopjkojopjojpj
         dfgdfgk ————————————————
         fdgg ertert dfgdfgdfgfh
         ................
         d 
         gf
         fdgdfg
         gfsdfg
         sfgdfg
         1231212313212312';
        BEGIN
          put_buffer(vMsg);
       END statement_level;
    /

    Code sql : 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
    22
     
     UPDATE emp SET ename = 'TOTI' WHERE ename='TOTO';
    UPDATE EMP with variable LONG
         sfdfgfgggggggggggggggggggggg $
     
    fggggggggggggggggggggggggggggggggggg
         sfdsfdgsdfgsdfg fsdgdfgsdfgfdg
    fdgdfsgsdfgdfgdfg
         dfgdfsgdfgdfg fgdfgdfgd dfgdfgdfg fgdfgdfg fgdfg
     
    ::;$^p"pkopjkojopjojpj
         d
    fgdfgk ----------------
         fdgg ertert dfgdfgdfgfh
         ................
     
    d
         gf
         fdgdfg
         gfsdfg
         sfgdfg
         1231212313212312
    1 row updated.


    peut etre que tu as juste besoin d'une fonction

    http://www.psoug.org/reference/convert_func.html

    au lieu d'utiliser un trigger

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

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

Discussions similaires

  1. [AC-2010] Requête action sur grosse table avec trigger LONG
    Par guen dans le forum Macros Access
    Réponses: 5
    Dernier message: 09/04/2015, 20h29
  2. [Oracle] Copie LONG RAW depuis un TRIGGER
    Par DarkBassRider dans le forum Oracle
    Réponses: 1
    Dernier message: 09/08/2006, 20h22
  3. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27
  4. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 20h22
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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