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 :

[MYSQL 4.1.14] Creation de function


Sujet :

SQL Procédural MySQL

  1. #1
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut [MYSQL 4.1.14] Creation de function
    Bonjour

    je suis en MYSQL 4.1.14 et je cherche à créer une fonction
    J'ai essayé de nombreuses syntaxes en se basant sur les posts de ce forum et du site de mysql.

    J'ai essayé le simple code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    delimiter |
    CREATE FUNCTION bonjour (s CHAR(20)) RETURNS CHAR(50)
    RETURN CONCAT('Bonjour, ',s,'!');
    |
    J'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(s CHAR(20)) RETURNS CHAR(50)
    RETURN CONCAT('Bonjour, ',s,'!')' at line 1
    J'ai également essayé avec un BEGIN et un END mais rien n'y fait.

    Je me suis demandé si les fonctions sont supportées en version 4.1 de MYSQL ou ce n'est apparu qu'en version 5 comme les procédures stockées.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    en 5 comme les proc stock

  3. #3
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    comme tu dis si bien
    Est-ce que tu sais si il y a une release note qui spécifie ça ?
    Ce qui me paraît surprenant c'est que lorsque que je tape en ligne de commande help function j'ai de la doc ...

    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
     
    Name: 'FUNCTION'
    Description:
    A user-defined function (UDF) is a way to extend MySQL with a new
    function that works like a native (built-in) MySQL function such as
    ABS() or CONCAT().
     
    function_name is the name that should be used in SQL statements to
    invoke the function.  The RETURNS clause indicates the type of the
    function's return value.  shared_library_name is the basename of the
    shared object file that contains the code that implements the function. The
    file must be located in a directory that is searched by your system's
    dynamic linker.
     
    To create a function, you must have the INSERT and privilege for the
    mysql database.  To drop a function, you must have the DELETE
    privilege for the mysql database.  This is because CREATE
    FUNCTION adds a row to the mysql.func system table that records the
    function's name, type, and shared library name, and DROP FUNCTION
    deletes the function's row from that table.  If you do not have this table,
    you should run the mysql_fix_privilege_tables script to create it.
    See also : [Upgrading-grant-tables].
    Examples:
    CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL}
           SONAME shared_library_name
     
    DROP FUNCTION function_name
    merci encore

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 287
    Par défaut
    Attention, tu confonds les UDF et les fonctions stockées - qui utilisent toutes deux l'instruction CREATE FUNCTION, ce qui embrouille effectivement les choses.

    Les UDFs existent depuis longtemps dans MySQL. Ce sont des fonctions "externes", càd créées dans un autre langage que le SQL et déclarées sous forme de bibliothèques compilées (cf http://dev.mysql.com/doc/refman/4.1/...functions.html).

    Les fonctions stockées, qui ont été ajoutées en 5.0 avec les procédures, ne sont pas externes mais stockées avec la base de données et écrites en SQL procédural (http://dev.mysql.com/doc/refman/5.0/...-routines.html).

  5. #5
    Membre émérite Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Par défaut
    effectivement j'ai relu entre temps la doc et je comprends mieux

    merci encore

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

Discussions similaires

  1. [MySQL] mysql aide a la creation DataBase
    Par jim888 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/10/2012, 22h13
  2. Réponses: 2
    Dernier message: 26/06/2009, 14h23
  3. creation de vue-version de MySQL
    Par vali7 dans le forum Installation
    Réponses: 3
    Dernier message: 11/01/2006, 15h37
  4. Réponses: 2
    Dernier message: 20/08/2005, 12h53
  5. [prob]Creation de function
    Par pulco42 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/04/2005, 12h11

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