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 :

Calcul de delta secondes entre deux dates : problème de conversion de types


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Calcul de delta secondes entre deux dates : problème de conversion de types
    Salut tout le monde!

    Je dois déterminer le temps que met chaque requête exécutée. N'ayant pas trouvé de fonction "chronomètre", j'ai codé le petit script ci-dessous.
    Mon probleme est que lorsque j'arrive a la ligne suivant:
    vdatedebutrequetenumber := to_number(vdatedebutrequetestring);
    J'ai une erreur : XXX Erreur (-6502) lors du traitement --> Pourquoi??

    Le code peut paraitre lourd, mais j'ai volontairement ici décomposé toutes les etapes.

    Merci d'avance pour toute aide!


    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    Set serveroutput on;
     
    Declare
     
    vnumero			number(12);		/* Numero de la requete (GFITEST.numero) */		
    Vreq			varchar2(3000);		/* Requete (GFITEST.requete) */
     
     
    vdatedebutrequetenumber	number(20,6);
    vdatedebutrequetestring	varchar2(20);
    vdatefinrequetenumber	number(20,6);
    vdatefinrequetestring	varchar2(20);
    vtempsrequetenumber	number(20,6);
    vtempsrequetestring	varchar2(20);
     
     
    /* Sélection des requetes SQL*/
    cursor C1 is SELECT G.NUMERO,G.REQUETE
    	     FROM GFITEST G;
     
    BEGIN
    OPEN C1;
    LOOP
     
    BEGIN
     
    	fetch C1 into Vnumero,Vreq;
    	exit when C1%NOTFOUND;
     
    	/**************************************/
    	/*Affichage du numero et de la requete*/	
    	/**************************************/
    	DBMS_OUTPUT.PUT_LINE('Requete numero:' ||Vnumero);
    	DBMS_OUTPUT.PUT_LINE('Requete: ***' ||Vreq || '***');
     
    	/*******************************/
    	/* Recuperation heure de debut */
    	/*******************************/
     
    	select to_char(systimestamp, 'SSSS.ff') into vdatedebutrequetestring from dual;
     
     
    	/*************************/
    	/*Execution de la requete*/
    	/*************************/
    	execute immediate Vreq;
     
    	/*******************************/
    	/* Recuperation heure de fin   */
    	/*******************************/
     
    	select to_char(systimestamp, 'SSSS.ff') into vdatefinrequete from dual; 
     
    	/*********************************/
    	/* Calcul du temps de la requete */
    	/*********************************/
    	vdatedebutrequetenumber:= to_number(vdatedebutrequetestring);
    	vdatefinrequetenumber := to_number(vdatefinrequetestring);
     
     
    	vtempsrequetenumber := vdatefinrequetenumber - vdatedebutrequetenumber); 
    	DBMS_OUTPUT.PUT_LINE('Temps :'||to_char(vtempsrequete));
     
     
     
     
     
    EXCEPTION	
    	WHEN OTHERS THEN
    		DBMS_OUTPUT.PUT_LINE('XXX Erreur ('|| sqlcode ||') lors du traitement ');
    		DBMS_OUTPUT.PUT_LINE(chr(13));
    		DBMS_OUTPUT.PUT_LINE(chr(13));
    		DBMS_OUTPUT.PUT_LINE(chr(13));
    		ROLLBACK;	
     
     
    END;
     
    END LOOP;
     
    CLOSE C1;
     
    IF Vcompteur = 0 THEN
    	DBMS_OUTPUT.PUT_LINE('Compteur a zero c pas normal');
    ELSE
    	DBMS_OUTPUT.PUT_LINE( Vcompteur || ' requetes trouvees');
    END IF;
     
    EXCEPTION
    	WHEN OTHERS THEN
    		raise_application_error (-20000,'XXX Erreur '|| sqlcode ||' rencontrée ds test.sql');
    END;
    /

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_char(sysdate,'SSSSS') From dual
    vous donne le nombre de secondes écoulées depuis le début de la journée.
    Cela devrait vous suffire pour établir la différence entre deux prises.

  3. #3
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par blobtwist Voir le message
    Salut tout le monde!

    Je dois déterminer le temps que met chaque requête exécutée. N'ayant pas trouvé de fonction "chronomètre", j'ai codé le petit script ci-dessous.
    ...
    Dbms_Utility.get_time

Discussions similaires

  1. calcul nombre de jours entre deux dates
    Par charlene44 dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2012, 14h06
  2. [AC-2003] Calcul de différence entre deux dates : problème de format
    Par sinifroth dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 22/01/2010, 15h35
  3. Calcul de la durée entre deux dates
    Par parab dans le forum IHM
    Réponses: 13
    Dernier message: 05/11/2008, 15h08
  4. [Dates] Calculer différence en jours entre deux dates
    Par looping2b2a dans le forum Langage
    Réponses: 4
    Dernier message: 29/12/2006, 23h32
  5. calculer la temps moyen entre deux dates
    Par zainabsourid dans le forum BIRT
    Réponses: 1
    Dernier message: 24/07/2006, 12h06

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