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 :

Interraction avec un script PL/SQL


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Interraction avec un script PL/SQL
    Bonjour,

    J'ai des script sql que je creer et que je dois faire executer en production par les equipes de production. Le process stimule que je dois prevoir le nombre de modification que cela dois impliquer sur les table cible.

    Je dois faire un script SQL qui dois afficher a l'utilisateur les nombre de modification faites et lui laissez le choix de faire un comit ou rollback.

    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
    22
    23
     
    DECLARE
      reponse VARCHAR2(1) := 'A';
    BEGIN
      UPDATE parpostes
      SET parvan2=1
      WHERE partabl=1436
      AND parpost=1;
     
      -- On boucle en attente de reponse de commit ou rollback.
      WHILE (reponse <> 'C' AND reponse <> 'R')
      LOOP
        ACCEPT reponse PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
      END LOOP;
     
      -- Une fois la boucle terminee, reponse a la valeur C ou R.
      IF (reponse = 'C')
      THEN
        COMMIT;
      ELSE
        ROLLBACK;
      END IF;
    END;


    Voila mais ca ne marche pas, cela me met des erreurs sur le ACCEPT.

    Est ce que qq un aurai une solution a me proposer pour corriger le probleme ou me proposer une autre solution.

    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
    ACCEPT est PROMPT sont des commandes SQL*Plus, en aucun cas du PL/SQL. Le PL/SQL n'est pas un langage interactif.

    En SQL pure ça marcherait aussi bien

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Ok merci c est ce que je pensais mais a ce moment la je ne peux plus faire mon teste en boucle sur la condition.

  4. #4
    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
    S'il s'agit vraiment d'un script SQL, il faut sortir la commande ACCEPT du code PL/SQL, et la placer après le bloc Declare/Begin/End;
    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

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Donc finalement voici mon script.
    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
     
    UPDATE parpostes SET parvan2=0 WHERE partabl=1436 AND parpost=1; 
     
    ACCEPT reponse PROMPT 'Validation de la requete : 1 = COMMIT  2 = ROLLBACK :' 
     
    DECLARE
      valid INTEGER := &reponse;
    BEGIN
      -- Une fois la boucle terminee, reponse a la valeur C ou R. 
      IF (valid = 1) 
      THEN 
        COMMIT; 
      ELSE 
        ROLLBACK; 
      END IF; 
    END;
    /
    Voici son execution .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SQL> start update3.sql
     
    2 rows updated.
     
    Validation de la requete : 1 = COMMIT  2 = ROLLBACK :1
    old   2:   valid INTEGER := &reponse;
    new   2:   valid INTEGER := 1;
     
    PL/SQL procedure successfully completed.
     
    SQL>
    Suite a cela il me reste une question. Comment supprimer les 2 lignes que j ai soulignées.

    MErci

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Mai 2004
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 236
    Points : 310
    Points
    310
    Par défaut
    Pour enlever

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    old 2: valid INTEGER := &reponse; 
    new 2: valid INTEGER := 1;
    il suffit de faire un au début de ton script.

    En espérant t'avoir aidé.

  7. #7
    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
    Merci d'utiliser les balises code !

    Je ne sais pas quelles lignes tu as soulignées, mais je suppose que
    doit répondre à ta question.
    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.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    magnifiquement aidé.

    Merci

  9. #9
    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 plaineR
    Merci d'utiliser les balises code !
    En effet, les balises sont QUOTE ou CODE et non LIST

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    je prends note merci

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

Discussions similaires

  1. Monitoring SQL Server Mirroring avec un script vbscript
    Par spiralcb dans le forum VBScript
    Réponses: 0
    Dernier message: 29/03/2012, 17h53
  2. Execute DDL avec un script PL/SQL
    Par EtudiantJ2EE dans le forum PL/SQL
    Réponses: 4
    Dernier message: 20/09/2011, 17h59
  3. comment lancer un script PL/SQL avec cx_Oracle
    Par awalter1 dans le forum Général Python
    Réponses: 0
    Dernier message: 28/07/2011, 15h43
  4. Réponses: 2
    Dernier message: 06/10/2009, 14h18
  5. [SSIS] ajout d'un rolemember avec un script sql
    Par remsrock dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 12/11/2008, 10h47

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