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

 MySQL Discussion :

Débutant et problèmes de procédures / fonctions


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut Débutant et problèmes de procédures / fonctions
    Bonjour,

    J'aborde les procédures et fonctions MySQL et j'ai un petit problème :

    Je souhaite parcourir un champ VARCHAR(20) d'une table et concaténer ce qui est trouvé à une variable puis retourner cette variable :

    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
     
    DELIMITER $$
     
    DROP FUNCTION IF EXISTS `cdf`.`essaif`$$
    CREATE FUNCTION `cdf`.`essaif` () RETURNS TEXT
    BEGIN
    DECLARE liste TEXT DEFAULT '';
    DECLARE psn TEXT DEFAULT '';
    LOOP
    SELECT probeset_name INTO psn FROM probeset;
    SET liste = CONCAT(liste, psn);
    END LOOP;
    RETURN liste;
    END$$
     
    DELIMITER ;
    J'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
    Par ailleurs, je n'ai pas cette erreur si je passe le code en tant que procédure, mais j'ai une erreur de renvoi de plusieurs lignes.

    Sauriez-vous par ailleurs comment gérer le stockage et renvoi de plusieurs lignes (sur plusieurs occurences d'une table) au sein d'une procédure (j'utilisais %ROWTYPE avec PostgreSQL et un type RECORD pour le renvoi) ?

    En vous remerciant,

    C. Tobini

  2. #2
    Membre Expert
    Avatar de Adjanakis
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2004
    Messages : 739
    Par défaut
    Bonjour,

    Je ne m'y connais pas trop en procédure et autre fonctions, mais en gros le message d'erreur signifie que cette création de méthode est considérée comme non déterministe. Il faut comprendre que son résultat pourrait être aléatoire. D'autre part, si les logs binaires sont configurés, il est possible que une requête d'insertion utilisant cette méthode y soit inscrite. Ces logs binaires permettant diverses fonctions d'administration (réplication, sauvegarde,...) il est impératif que ses requêtes aient toujours les même conséquences. C'est le contraire de l'aléatoire de la fonction créée par la requête décrite. Il faut rajouter DETERMINISTIC.

    Lien vers le manuel

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 334
    Par défaut
    Bonjour et merci de la réponse,

    Les logs binaires sont effectivement actifs sur ma base.

    J'ai fixé la variable :

    SET GLOBAL log_bin_trust_function_creators = 1

    dans mysql (la base) pour résoudre ce problème.

    Je pense également réinjecter mes fonctions qui sont actuellement NOT DETERMINISTIC (par défaut).

    Bonne journée,

    C. Tobini

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

Discussions similaires

  1. débutante : problème pour path fonction créée
    Par mainak29 dans le forum Octave
    Réponses: 0
    Dernier message: 01/03/2011, 06h22
  2. Réponses: 1
    Dernier message: 04/09/2007, 23h33
  3. [Débutant] problème avec la fonction contour
    Par sydneya dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/06/2007, 11h08
  4. Réponses: 4
    Dernier message: 29/05/2007, 10h03
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

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