web-dev-qa-db-fra.com

MySQL, crée une fonction simple

Je veux créer une fonction MySQL simple, j'ai cette procédure MySQL:

CREATE PROCEDURE getUser(gU INT)
   SELECT * FROM Company
   WHERE id_number = gU;

CALL getUser(2);

J'ai besoin d'aide pour en faire une fonction MySQL. Quels sont les avantages et les inconvénients de l'utilisation d'une fonction sur une procédure?

33
Dembele

c'est un exemple de fonction mysql. J'espère que ça aide. (Je ne l'ai pas encore testé, mais devrait fonctionner)

DROP FUNCTION IF EXISTS F_TEST //
CREATE FUNCTION F_TEST(PID INT) RETURNS VARCHAR
BEGIN
/*DECLARE VALUES YOU MAY NEED, EXAMPLE:
  DECLARE NOM_VAR1 DATATYPE [DEFAULT] VALUE;
  */
  DECLARE NAME_FOUND VARCHAR DEFAULT "";

    SELECT EMPLOYEE_NAME INTO NAME_FOUND FROM TABLE_NAME WHERE ID = PID;
  RETURN NAME_FOUND;
END;//
35
Alejandro Bastidas

Exemple de fonction MySQL:

Ouvrez le terminal mysql:

el@apollo:~$ mysql -u root -pthepassword yourdb
mysql>

Supprimez la fonction si elle existe déjà

mysql> drop function if exists myfunc;
Query OK, 0 rows affected, 1 warning (0.00 sec)

Créer la fonction

mysql> create function hello(id INT)
    -> returns CHAR(50)
    -> return 'foobar';
Query OK, 0 rows affected (0.01 sec)

Crée un tableau simple pour le tester

mysql> create table yar (id INT);
Query OK, 0 rows affected (0.07 sec)

Insérer trois valeurs dans la table yar

mysql> insert into yar values(5), (7), (9);
Query OK, 3 rows affected (0.04 sec)
Records: 3  Duplicates: 0  Warnings: 0

Sélectionnez toutes les valeurs de yar, exécutez notre fonction hello à chaque fois:

mysql> select id, hello(5) from yar;
+------+----------+
| id   | hello(5) |
+------+----------+
|    5 | foobar   |
|    7 | foobar   |
|    9 | foobar   |
+------+----------+
3 rows in set (0.01 sec)

Verbaliser et internaliser ce qui vient de se passer:

Vous avez créé une fonction appelée hello qui prend un paramètre. Le paramètre est ignoré et renvoie une CHAR(50) contenant la valeur 'foobar'. Vous avez créé une table appelée yar et y avez ajouté trois lignes. L'instruction select exécute la fonction hello(5) pour chaque ligne renvoyée par yar.

12
Eric Leschinski