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 :

Déclarer une transaction


Sujet :

Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut Déclarer une transaction
    bonjour

    j'ai 3 requete insert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    insert into table1 values(' ',' ',......)
    insert into table2 values(' ',' ',......)
    insert into table3 values(' ',' ',......)
    je veux que ces 3 requete s'éxecute toutes ou s'il y'a un prob dans 1 seul
    les autres ne sont pas éxécutés

    pour cela j'ai pensé à utilisation une transaction
    je l'ai déclaré comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin transaction 1; 
     
    insert into table1 values(' ',' ',......)
    insert into table2 values(' ',' ',......)
    insert into table3 values(' ',' ',......)
     
    commit transaction 1;
    est ce que c'est correct et suffisant ce que j'ai déclaré? ou je dois faire des test
    par exemple :
    s'il y'a un prob lors de l'éxecution d'une requete faire un ROLLBACK

    si c'est oui comment je dois déclarer ça?
    je suis débutant j'ai vraiment besoin d'aide

    merci

  2. #2
    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
    ajoute ceci en début de script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHENEVER SQLERROR EXIT FAILURE;
    En PL/SQL, tu dois utiliser les exceptions

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Salut,
    je connais un peu oracle mais je ne connais pas un genre de programme SQL s'écrit comme suit :
    begin transaction 1;
    insert .... into ....;
    etc;
    commit transaction;
    Pour cela, comme la bien dit orafrance, il faut que tu utilise un programme PL/SQL en procédant comme ceci :
    create procedure insertion ( -- liste de tes arguments ici) is
    declare -- la liste de tes variables
    PRAGMA AUTONOMOUS_TRANSACTION ; -- c'est pour montrer que l'on doit exécuter un commit à l'intérieur du programme.
    begin
    insert ... into ...;
    -- bref toutes les requêtes insert ou autres que tu veux exécuter
    -- A la fin des insertions, faire ce qui suit pour l'enregistrement
    commit;
    -- Gérer les exceptions éventuellement générés
    exception
    when others then -- ici le traitement de l'erreur;
    end;
    -- Pour l'exécuter directement, tu peux faire un '/' et le tour est joué.
    Il faut alors garder en tête que ce programme, à l'image des tables que tu as crééés, sera stocké dans ta base de données. Pour l'exécuter, tu dois procéder comme suit:
    execute insertion(au besion, mentionner les paramètres);
    Cependant, puisque tout ce que je viens de t'expliquer est un peu difficile pour un débutant comme toi, tu peux faire plus simple. Tu ouvre le bloc note de windows ou ton logiciel éditeur de texte préféré puis tu y écris toutes les requêtes que tu veux et tu termines par un commit, chacune d'elle se terminant par un ';' bien entendu. Ensuite tu te connecte à ta BD par la fenêtre 'exécuter SQL en ligne de commande (SQL * Plus) d'oracle' située dans démarrer --> tous les programmes --> oracle et en tapant ceci :
    connect ton nom d'utilisateur/ton mot de passe
    Enfin tu fais un copie/collé de tes reqêtes dans la fenêtre SQL * Plus et toutes les requêtes sont exécutées même le commit. Au cas où il y a des erreurs, tu tapes la commande suivante pour voir de quoi il s'agit
    show errors;
    J'espère avoir bien répondu à ta question, si tu en as d'autres, n'hésites pas à me les poser je verrai ce que je peux faire.
    Bonne continuation et courage.
    @omzo
    "L'ignorant qui ignore qu'il ignore est plus ignorant que l'ignorant qui n'ignore pas qu'il ignore."
    [Proverbe arabe]

  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
    Citation Envoyé par @omzo Voir le message
    PRAGMA AUTONOMOUS_TRANSACTION ; -- c'est pour montrer que l'on doit exécuter un commit à l'intérieur du programme.
    mais c'est n'importe quoi ça

    Eventuellement tu peux l'utiliser dans un trigger mais attention aux effets de bord

  5. #5
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Citation Envoyé par john_wili Voir le message
    pour cela j'ai pensé à utilisation une transaction
    je l'ai déclaré comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    begin transaction 1; 
     
    insert into table1 values(' ',' ',......)
    insert into table2 values(' ',' ',......)
    insert into table3 values(' ',' ',......)
     
    commit transaction 1;
    Oracle démarre une transaction automatiquement à la première demande d'écriture dans la session: càd pour les instructions de manipulation des données sur un INSERT, UPDATE, DELETE ou SELECT uniquement avec la clause FOR UPDATE. Le SQL Oracle n' pas d'instruction 'begin transaction'.

Discussions similaires

  1. [Property] Comment déclarer une chaine par defaut ?
    Par Clorish dans le forum Composants VCL
    Réponses: 8
    Dernier message: 07/09/2004, 22h11
  2. déclarer une nouvelle version de Tomcat
    Par keopsk dans le forum JBuilder
    Réponses: 9
    Dernier message: 02/07/2004, 22h28
  3. Comment déclarer une DataSource dans server.xml
    Par guillaume06 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/06/2004, 14h27
  4. Utilisation d'une transaction
    Par Bernard M dans le forum Bases de données
    Réponses: 6
    Dernier message: 21/04/2004, 23h31
  5. Déclarer une matrice
    Par joy dans le forum C
    Réponses: 7
    Dernier message: 09/12/2002, 00h42

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