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 :

Récupérer le nom d'une table dans une fonction


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut Récupérer le nom d'une table dans une fonction
    Bonjour,

    Je voudrai écrire une fonction que l'on pourra utiliser dans une requête SELECT du même style que la fonction MAX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT mafonction(colonne) FROM matable;
    De ce fait, ma fonction prendra en argument une colonne mais le problème est de savoir comment faire dans ma fonction pour récupérer le nom de la table sur laquelle la fonction va s'exercer (matable) ? Car pour éxecuter le code dans ma fonction, je devrai bien evidemment connaître le nom de la table Existe-t'il un package permettant de récupérer ce nom (DBMS_METADATA) ?

    Merci.

  2. #2
    Membre chevronné Avatar de Shivaneth
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 349
    Par défaut
    Bonjour,
    normalement tu n'as pas à récupérer le nom de ta table si ta fonction ne s'exécute que sur la colonne. Exemple la fonction max prend une colonne en paramètre et retourne la valeur la plus grande, peut importe la table de base elle ne travaille que sur une colonne.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Merci de répondre si vite ^^,

    Ce que je ne comprends pas c'est comment la fonction connait les valeurs de la colonne ?

    Pour ma part, je pensais qu'il fallait créer dans la fonction un curseur comprenant toutes les valeurs de la colonne sélectionné dans l'appel à la fonction (d'où le besoin du nom de la table) puis parcourir le curseur et comparer les valeurs entre elles afin de retourner que la plus grande.

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Facilement ce n'est pas possible.
    La fonction sera exécutée pour chaque ligne de ta table.
    Les fonctions d'aggrégation comme MAX ne renvoient qu'une ligne.

    Donne plus de détail sur ta fonction qu'on puisse t'aider à la développer.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 224
    Par défaut
    Un exemple de code serait celui de la fonction MAX ou COUNT ou SUM ou autre.

    Il s'agirait en fait de recoder ces fonctions. Exercice qui pourrait être très intéressant pour des étudiants.

  6. #6
    Expert confirmé 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
    Par défaut
    Citation Envoyé par Milo59000 Voir le message
    ...Exercice qui pourrait être très intéressant pour des étudiants.
    Vu le besoin c'est vachement intéressant pour les étudiants
    Coding your own aggregate functions

Discussions similaires

  1. [AC-2010] Récupérer le nom de la table dans une macro de données
    Par efilippi dans le forum Macros Access
    Réponses: 2
    Dernier message: 09/07/2013, 09h20
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 10h17
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 14h29
  5. Récupérer le nom d'une colonne d'une table dans une variable
    Par mimi51340 dans le forum Général Java
    Réponses: 4
    Dernier message: 13/03/2008, 14h23

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