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 Procédural MySQL Discussion :

Comment créer une fonction comme POW() ?


Sujet :

SQL Procédural MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Comment créer une fonction comme POW() ?
    Bonjour,

    j'aimerais créer une fonction qui fait le même travail que la fonction POW() en Mysql à partir d'une Boucle WHILE dans la fonction.
    mais j'ai essayé plusieurs manières la fonction ne marche pas correctement.

    merci de m'aider...

    voici le code

    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
    CREATE DEFINER=`root`@`localhost` FUNCTION `calcule_puissance`(x int, y int)
     
     RETURNS integer
     
    BEGIN
     
    declare calcul int default 1;
    declare numb int default 1 ;
    while  numb < y  do
     
    set calcul = calcul * y;
    set numb = numb + 1;
     
    end while;
    RETURN calcul;
    END

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 869
    Points
    12 869
    Par défaut
    Bonjour,
    JE vois bien x dans les paramètres, mais pas dans le code.

    Tatayo.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 299
    Points : 39 634
    Points
    39 634
    Billets dans le blog
    9
    Par défaut
    Bonsoir,


    Pourquoi vouloir réinventer ce qui existe ?

    Une boucle while consiste à traiter une à une des occurrences qui le plus souvent peuvent être traitées en une seule fois de façon ensembliste.
    Tous les SGBD relationnels sont d'autant plus performants qu'on leur demande d'appliquer cette logique ensembliste plutôt qu'unitaire et c'est tout à fait normal, puisque c'est l'algèbre relationnelle qui est le coeur du fonctionnement des SGBD relationnels !
    Donc sauf contrainte incontournable, évitez le traitement ligne à ligne.

    Quel est le besoin fonctionnel ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci de me répondre si tôt ,

    comme je suis un étudiant en informatique j'ai un devoir a traite et cela fait partis du devoir c'est pour cette raison que j'ai dois refaire cette fonction .
    si j'ai eus un cheminement ça me fera plaisir merci par avance.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonsoir Tatayo,

    j'ai essayé de mettre x dans la boucle mais il va retourner null.

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 412
    Points : 19 183
    Points
    19 183
    Par défaut
    Salut à tous.

    Il n'est pas nécessaire de faire une boucle pour calculer la puissance :
    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
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    CREATE FUNCTION `puissance` (_x integer, _y integer)
    RETURNS integer
    DETERMINISTIC
    NO SQL
    BEGIN
            return exp(_y * log(_x));
    END
    --------------
     
    --------------
    select `puissance`(2,5)
    --------------
     
    +------------------+
    | `puissance`(2,5) |
    +------------------+
    |               32 |
    +------------------+
    --------------
    COMMIT
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 239
    Points : 12 869
    Points
    12 869
    Par défaut
    Artemus24 : Oui, mais Eyabm doit utiliser une boucle, sinon pourquoi ne pas utiliser Pow() directement ?
    D'ailleurs puisque qu'il s'agit d'un devoir, le mieux à faire est de ne pas lui donner la solution, mais de le guider vers celle-ci. CF la charte du forum.
    eyabm : ta fonction renvoie null, mais sans le code je ne vois pas qui pourrait te dire ce qui ne va pas.

    Tatayo.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Turquie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour a tous,

    Artemus24: Merci pour le code que vous avez envoyé sa fonctionne bien mais comme j'ai le énoncé ci-dessus sa sera encore meilleur si on le fait avec une boucle WHILE.
    J'ai besoin d'un cheminement encore plus et je vous remercie les liens que vous m'avez fait part sa ma beaucoup aider.

Discussions similaires

  1. Comment créer une fonction qui retourne un tableau?
    Par Dereck07 dans le forum Delphi
    Réponses: 4
    Dernier message: 26/04/2007, 13h16
  2. comment créer une fonction dans un activex
    Par barhoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/03/2007, 18h19
  3. Réponses: 9
    Dernier message: 22/02/2007, 14h51
  4. comment créer une fonction et la déclancher a chaque jour
    Par G_Kill dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/12/2006, 18h02

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