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

SQL Oracle Discussion :

[8i] Erreur dans une procédure


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    Par défaut [8i] Erreur dans une procédure
    Bonjour,

    Lorsque je compile cette procédure, Oracle me retourne l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    16:42:57 SQL> show error
    Erreurs pour PROCEDURE REMPLIR_TABLE_STAT_INDEX :
     
    28/4     PL/SQL: Statement ignored
    28/25    PLS-00306: wrong number or types of arguments in call to '||'
    16:43:00 SQL>
    Voici le code de ma procédure :
    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
     
    CREATE OR REPLACE PROCEDURE remplir_table_stat_index IS 
     
    CURSOR index_stat IS
    	SELECT	name,
                 	height,
                 	lf_rows,
                 	del_lf_rows
    	FROM	index_stats;
     
    v_index_stat index_stat%rowtype;
     
    CURSOR nom_Index IS
    	SELECT	index_name, 
    		tablespace_name
    	FROM	user_indexes
    	WHERE	index_name = 'PS_ESTHER_IND3';
     
    v_nom_index nom_Index%rowtype;
     
    BEGIN
    DBMS_OUTPUT.ENABLE(100000);
     
    FOR v_nom_index IN nom_index
    	LOOP
    		EXECUTE IMMEDIATE 'analyze index ' || v_nom_index.index_name ||' validate structure';
    		OPEN index_stat;
    			fetch index_stat into v_index_stat;
    			DBMS_OUTPUT.PUT_LINE(v_index_stat || '');
    		CLOSE index_stat;
       	END LOOP;
    END;
    /
    Je ne vois pas ce qui pose problème ..

    Merci pour votre aide,
    A.Personnat

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Je pense que ça vient de ton DBMS_OUTPUT.PUT_LINE à la fin, auquel tu balances v_index_stat qui est un ROWTYPE.
    Il faudrait peut-être préciser la ou les variable(s) du ROWTYPE utilisée(s).
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    Par défaut
    "préciser la ou les variable(s) du ROWTYPE utilisée(s)."

    Humm désolé mais je ne vois pas trop, pourrais tu stp préciser ta pensée ?

    Merci,
    Alain

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    500
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 500
    Points : 639
    Points
    639
    Par défaut
    Dans ton curseur index_stat, tu sélectionnes name, height, lf_rows et del_lf_rows. Donc il faut spécifier v_index_stat.name ou v_index_stat.height par exemple. Ou les combiner en les concaténant avec ||
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DBMS_OUTPUT.PUT_LINE('Nom : ' || v_index_stat.name || ' - Taille : ' || v_index_stat.height  || '');
    Entre parenthèse, tes '' à la fin me semblent inutiles.
    Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !

  5. #5
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 307
    Points
    5 307
    Par défaut
    L'erreur se situe la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DBMS_OUTPUT.PUT_LINE(v_index_stat || '');
    tu ne peux pas passer un record (v_index_stat) à put_line()...

    Il faut passer les camps un à un...

    [edit] : me suis fait griller...
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    283
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 283
    Points : 122
    Points
    122
    Par défaut
    Bien vu

    Merci pour ton aide

    En te souhaitant une bonne fin de journée

    Cdt,
    Alain

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/04/2008, 12h00
  2. un erreur dans une procédure
    Par jack_1981 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/01/2008, 12h44
  3. Renvoyer une erreur dans une procédure stockée
    Par SLt dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/04/2007, 18h41
  4. Erreurs dans une procédure
    Par zekicker dans le forum Oracle
    Réponses: 9
    Dernier message: 14/01/2007, 08h14
  5. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06

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