Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1588 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Interraction avec un script

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Interraction avec un script

n°1230553
td-rat
www.corkteam.com
Posté le 25-10-2005 à 15:36:17  profilanswer
 

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.
 
Dans l'etat actuel des choses je procede comme cela. Je recupere dans le fichier ${VAR_UT_CONNECT_STRING} les modifications réalisées.
 

Code :
  1. sqlplus -S /NOLOG <<_EOT
  2.         WHENEVER OSERROR EXIT FAILURE
  3.         WHENEVER SQLERROR EXIT SQL.SQLCODE
  4.         SPOOL ${VAR_UT_SQL_FILE_RES}
  5.         CONN ${VAR_UT_CONNECT_STRING}
  6.         SPOOL OFF
  7.         SET HEADING OFF
  8.         SET VERIFY OFF
  9.         SPOOL ${VAR_UT_SQL_FILE_RES}
  10.         ${VAR_UT_SQL_CMD};
  11.         SPOOL OFF
  12.         QUIT
  13. _EOT


 
Par contre, je ne sais pas comment faire pour que l'utilisateur puisse le voir et saisir, et lui laisser la possiblilité de faire un commit ou rollback. Je sais meme pas si c est possible.  
 
Toutes les idées, ou liens sont les bienvenues. Merci

mood
Publicité
Posté le 25-10-2005 à 15:36:17  profilanswer
 

n°1231122
Beegee
Posté le 25-10-2005 à 23:01:38  profilanswer
 

Tu peux utiliser le mot clé ACCEPT, exemple ici :
 
http://www.easyprogs.com/index.php [...] sation.php
 
et tu pourras afficher qqch comme :
 
"Faire un commit (C) ou rollback (R) ?"
 
et boucler tant que l'utilisateur ne choisit pas entre C et R :)
 
edit : pour l'affichage d'infos, tu peux utiliser dbms_output.

Message cité 1 fois
Message édité par Beegee le 25-10-2005 à 23:03:24
n°1231211
td-rat
www.corkteam.com
Posté le 26-10-2005 à 09:17:25  profilanswer
 

Merci je vais essayé ca, je reviendrai peut etre posté car je ne suis pas un expert sqlplus :)
 

n°1231219
td-rat
www.corkteam.com
Posté le 26-10-2005 à 09:32:43  profilanswer
 

Beegee a écrit :


"Faire un commit (C) ou rollback (R) ?"
 
et boucler tant que l'utilisateur ne choisit pas entre C et R :)


 
J ai bien integrer le ACCEPT et la saisie d'une reponse par contre comment fais tu pour faire une boucle tant qu on as pas R ou C.
 
Il faut du conditionnel pour tester C ou R et il faut une boucle type while. Dans le lien que tu as donné cela n est pas abordé.
 
Merci

n°1231229
Beegee
Posté le 26-10-2005 à 09:45:03  profilanswer
 

WHILE <condition>
LOOP
  <loop_body>
END LOOP;
 
Donc dans ton cas :
 
WHILE (reponse <> 'C' AND reponse <> 'R')
LOOP
  ACCEPT ...
END LOOP;

n°1231583
td-rat
www.corkteam.com
Posté le 26-10-2005 à 15:03:54  profilanswer
 

Bon je travail dessus mais j avance pas des masses. J ai un certain nombre de question.
 
Voici mon script : update.sql

Code :
  1. update parpostes set parvan2=1 where partabl=1436 and parpost=1;
  2. HOST echo `cat vide.txt`
  3. WHILE (reponse <> 'C' AND reponse <> 'R')
  4. ACCEPT reponse PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
  5. IF (reponse = 'C')
  6. COMMIT;
  7. ELSE
  8. ROLLBACK;
  9. END;
  10. END LOOP;


 
Maintenant voici les resultats.

Code :
  1. SQL> start update.sql
  2. 2 rows updated.
  3. SP2-0734: unknown command beginning "WHILE (rep..." - rest of line ignored.
  4. Validation de la requete : C =COMMIT R =ROLLBACK :C
  5. SP2-0734: unknown command beginning "IF (repons..." - rest of line ignored.
  6. Commit complete.
  7. SP2-0042: unknown command "ELSE" - rest of line ignored.
  8. Rollback complete.
  9. SP2-0042: unknown command "END IF" - rest of line ignored.
  10. SP2-0042: unknown command "END LOOP" - rest of line ignored.
  11. SQL>


 
Donc j arrive pas afaire fonctionner le While ni le IF.
Merci de ton aide beegee

n°1231588
Beegee
Posté le 26-10-2005 à 15:18:24  profilanswer
 

Faut faire du PL/SQL, par conséquent, un BEGIN ... END;
 

Code :
  1. DECLARE
  2.   reponse VARCHAR2(1) := 'A';
  3. BEGIN
  4.   UPDATE parpostes
  5.   SET parvan2=1
  6.   WHERE partabl=1436
  7.   AND parpost=1;
  8.   -- A quoi te sert HOST ???
  9.   HOST echo `cat vide.txt` 
  10.   -- On boucle en attente de reponse de commit ou rollback.
  11.   WHILE (reponse <> 'C' AND reponse <> 'R')
  12.   LOOP
  13.     ACCEPT reponse PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
  14.   END LOOP;
  15.   -- Une fois la boucle terminee, reponse a la valeur C ou R.
  16.   IF (reponse = 'C')
  17.   THEN
  18.     COMMIT;
  19.   ELSE
  20.     ROLLBACK;
  21.   END IF;
  22. END;


Message édité par Beegee le 26-10-2005 à 15:19:51
n°1231620
td-rat
www.corkteam.com
Posté le 26-10-2005 à 15:40:29  profilanswer
 

Pour le HOST j'affiche des infos contenu dans un fichier texte mais c est pas primordiale.
 
J ai mis ton scritp dans un fichier : update.sql
 

Code :
  1. SQL> start update.sql
  2. 26 /
  3.     ACCEPT reponse PROMPT 'Validation de la requete : 1 =COMMIT 2 =ROLLBACK :'
  4.            *
  5. ERROR at line 9:
  6. ORA-06550: line 9, column 12:
  7. PLS-00103: Encountered the symbol "REPONSE" when expecting one of the
  8. following:
  9. := . ( @ % ;


Il semblerai qu il ai une erreur au niveau du ACCEPT
Je planche sur le PL/SQL, que je ne connaissait pas. Je ne trouve ACCEPT.
Ca ouvre des perspectives tres interessantes. Je vais demandé une formation a ma boite :)


Message édité par td-rat le 26-10-2005 à 16:52:56
n°1231694
Beegee
Posté le 26-10-2005 à 16:58:34  profilanswer
 

Fais plutôt :
 

Code :
  1. BEGIN
  2.   UPDATE parpostes
  3.   SET parvan2=1
  4.   WHERE partabl=1436
  5.   AND parpost=1;
  6.   -- A quoi te sert HOST ???
  7.   HOST echo `cat vide.txt` 
  8.   -- On boucle en attente de reponse de commit ou rollback.
  9.   ACCEPT reponse VARCHAR2(1) PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
  10.   WHILE (reponse <> 'C' AND reponse <> 'R')
  11.   LOOP
  12.     ACCEPT reponse VARCHAR2(1) PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
  13.   END LOOP;
  14.   -- Une fois la boucle terminee, reponse a la valeur C ou R.
  15.   IF (reponse = 'C')
  16.   THEN
  17.     COMMIT;
  18.   ELSE
  19.     ROLLBACK;
  20.   END IF;
  21. END;


 
(c'est la 1ère fois que j'utilise ACCEPT :D )

n°1231706
td-rat
www.corkteam.com
Posté le 26-10-2005 à 17:06:54  profilanswer
 

Pas mieux :

Code :
  1. SQL> start update3.sql
  2. 22  /
  3.   ACCEPT reponse VARCHAR2(1) PROMPT 'Validation de la requete : C =COMMIT R =ROLLBACK :'
  4.          *
  5. ERROR at line 8:
  6. ORA-06550: line 8, column 10:
  7. PLS-00103: Encountered the symbol "REPONSE" when expecting one of the
  8. following:
  9. := . ( @ % ;
  10. ORA-06550: line 8, column 30:
  11. PLS-00103: Encountered the symbol "PROMPT" when expecting one of the following:
  12. := ; not null default character


 
 
Je cherche aussi de mon coté mais les exemples avec ACCEPT ne courrent pas les rues.
Sinon y a pas une autre maniere?
 
 
 
 

mood
Publicité
Posté le 26-10-2005 à 17:06:54  profilanswer
 

n°1231712
Beegee
Posté le 26-10-2005 à 17:19:55  profilanswer
 

Y a un bon exemple ici :
 
http://www.csee.umbc.edu/~mikeg/cmsc461/plsql.sql
 
ACCEPT est un mot clé de sqlplus, et non de PL/SQL comme je le pensais ... du coup, il faut que tu adaptes le code, mais je vois pas trop comment faire la boucle maintenant :D

n°1270938
ALS23
Posté le 20-12-2005 à 17:31:53  profilanswer
 

J'ai besoin de faire le même genre de script, et je ne m'en sors pas pour faire la boucle LOOP à cause du ACCEPT... Est-ce que l'un de vous 2 avez finalement trouvé la solution?
Je suis très intéressée!
 
Merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Interraction avec un script

 

Sujets relatifs
Contrôler le temps d'exécution d'une partie d'un scriptJe cherche un script paid to click, paid to sign-up, paid-to-review e-
Script PHP, bonjour, bousoirptit script marche sur IE pas sur Firefox
Mettre le nom d'une table en paramètre dans un script SqlComment ouvrir les script de php avec mozzila firefox?
Script qui passe avec Xdialog et non avec Dialogcommande script FTP
VBScript - Modification d'un fichier par scriptscript ne fonctionne pas
Plus de sujets relatifs à : Interraction avec un script


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR