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 :

Curseur et fonction agrégats


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut Curseur et fonction agrégats
    Salut A tous,
    j'ai un problème avec les fonctions Agrégats en effet je veux appliquer des fonctions agrégats sur les colonnes de ma table stocker dans un curseur.

    l'erreur est ora-01722 "invalid number;
    ora-06512

    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
    voici le code
     
     
    procedure informationsColonnes(t_name in varchar2) is
     
    		cursor list is select column_name,data_type,num_distinct,num_nulls from user_tab_columns where table_name like t_name;
    			cols list%rowtype;
    			MIN number;
    			MAX number;
    			stdev number;
    			var number;
    			med number;
    			stats number;
    			avge number;
     
    			begin
     			-- insertion des lignes de colonnes de la table
     			open list;
     			 loop
     				fetch list into cols;
     				insert into informations_Colonnes(col_name,type,nbr_null,nbr_dist) values(cols.column_name,cols.data_type,cols.num_nulls,cols.num_distinct);
     
     
     
     					if ( (cols.data_type like'%NUMBER%') or (cols.data_type like'%DATE%') ) then
     
     
     
     					--select min(cols.column_name) into MIN from user_tab_columns u where u.column_name like cols.column_name;
     
     					 --select max(cols.column_name) into MAX from user_tab_columns u where u.column_name like cols.column_name;
     
     					   select STDDEV(cols.column_name) into stdev from user_tab_columns u where u.column_name like cols.column_name;
     
     					   select variance(cols.column_name) into var from user_tab_columns u where u.column_name like cols.column_name;
     
     					   select median(cols.column_name) into med  from user_tab_columns u where u.column_name like cols.column_name;
     
     					     select stats_mode(cols.column_name) into stats from user_tab_columns u where u.column_name like cols.column_name;

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    L'erreur est conforme à l’opération que tu cherches à effectuer, soit le calcul d'une moyenne, écart-type ou autre co-variance sur une chaîne de caractères.
    Ces fonctions n'opèrent que sur des nombres... et un nom de colonne n'est pas un nombre.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2017
    Messages : 2
    Par défaut
    Comment je fais alors ?
    normalement
    et par aptitude on fait select (nom_de_colonnes) from table;

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Pour comprendre pourquoi un code ne fonctionne pas, le moyen le plus sûr est de l'exécuter "à la main", ligne par ligne.

    dans ton cas, il faudrait passer par une requête construite de manière dynamique.
    Il me semble me souvenir qu'il y a un exemple qui pourrait t'être utile dans la documentation PL/SQL d'Oracle autour de REF CURSOR.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. [A-07] SQL erreur fonction agrégat compte max
    Par chus03 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/12/2008, 21h53
  2. Message d'erreur requête fonction agrégat
    Par luke80 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 06/04/2008, 17h58
  3. curseur et fonction (2000)
    Par luta dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 07/10/2007, 11h04
  4. Probleme fonction agrégat ?
    Par Sancho_54 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 04/09/2007, 15h49
  5. [Access] Erreur fonction agrégat
    Par liljerem dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/06/2007, 11h50

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