Fonction utilisateur et les accents
Bonjour,
Dans mon projet je fais en sorte que les opérations d'écriture passe par des fonction utilisateur mysql. A partir de là je constate que les mots avec des accents ne fonctionne pas. Par contre, si je passe par directement par la requête d'insert les mots ayant des accents ça passe.
Voici la fonction d'insertion.
Code:
1 2 3 4 5 6 7 8 9 10 11
|
CREATE FUNCTION `NewDescription`(p_name VARCHAR(255), p_description TEXT)
RETURNS mediumint(10)
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
INSERT INTO `zorha_prd_description` (`name`, description) VALUES (p_name, p_description);
RETURN LAST_INSERT_ID();
END; |
Autre chose de bizarre que je viens de voir.
Dans EMS j'ai généré une vue. Et j'ai eu cette syntaxe d'ajouter.
Code:
1 2 3 4
|
CREATE ....
SELECT ....
WHERE nom = _utf8'P' ... |
le 'P' c'est moi qui l'a rajouté mais le _utf8 devant quel est l'explication?
Merci
Fonction et Procédures stockées
Du nouveau.
En faite, les fonctions utilisateurs dans Mysql n'ont pas vocation à faire des opérations d'écriture avec des données venant des utilisateurs. Je pense que leurs roles est de faires des opérations interne. Des calcules, des retours d'information, etc...
Pour des opérations avec des données utilisateurs entrainant une action d'écriture dans la base de données c'est plus le boulot pour les procédures stockés.
C'est peut être pour cela que j'avais des problèmes d'accents avec les fonctions car ce dernier ne devais pas gérer les jeux de caractères spécifiques en paramètres.
Pour résoudre le probleme du return inexistant dans les procédures il faut utiliser le OUT mais le faire passer en paramètre via une variable.
Dans la prod stock il fait l'addition de a et b et le resultat de l'opération se trouve dans c.
Code:
1 2 3 4 5 6
| @a = 1;
@b = 2;
@c = 12;
CALL maprocstock(@a,@b,@c)
SELECT @c |
Affiche 3.