2017-02-10 1 views
1

J'essaie d'utiliser une fonction MySQL pour insérer des enregistrements dans une table permanente. Mon code de fonction SQL est similaire à ceci: -Utiliser une fonction MySQL pour insérer des enregistrements dans une table

delimiter // 
    create function fn_eval 
    (
    a varchar(36), 
    b int, 
    c varchar(36) 
    ) 
    returns bigint deterministic 
begin 
     declare retvalue int default 0; 
     insert into eval_tbl(a,b,c,d) 
     select a,b,c,d 
     from 
      ((select a,b,c,d from eval_tbl_1 
      inner join eval_tbl_2) 
      ON eval_tbl_1.c = eval_tbl_2.c) 
      ) 

     SET retvalue=1; 
     return retvalue; 
end // 
delimiter ; 

En essayant d'appeler la fonction:

select fn_eval ('1', 2, '3') from dual; 

retourne 1. Cependant, à essayer d'utiliser cela comme une fonction en ligne dans une requête, ça revient OK. Je ne suis pas capable de comprendre la raison de cela. Quelqu'un peut-il m'aider à ce sujet?

+0

Comment essayez-vous de l'utiliser? –

+0

J'essaie de l'utiliser dans le format suivant: - sélectionnez fn_eval (a, b, c), a de eval_tbl_a; – Annie

Répondre

0

La requête utilisée était correcte, mais le problème était qu'un certain champ renvoyait des valeurs en double. La requête renvoyait OK comme résultat. Ajout de quelques conditions pour sélectionner les enregistrements distincts, après quoi ce problème a été résolu.