FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Function mysql 5
 

Function mysql 5

Il y a 489 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : Function mysql 5
 
Plus d'informations

Bonjours, j'ai un petit probleme avec une function mysql 5

 
Code :
  1. DELIMITER //
  2. DROP FUNCTION IF EXISTS func_test//
  3. CREATE FUNCTION func_test(msg_id text, lng char(20), table_name char(30) ) returns text DETERMINISTIC
  4. BEGIN
  5.   DECLARE full_table_name;
  6.   SET full_table_name = CONCAT(table_name ,'_msg');
  7.   IF msg_id > 0 THEN
  8.     SELECT lng INTO tmp_msg FROM full_table_name WHERE `id` = msg_id;
  9.   ELSE
  10.     SET tmp_msg = Null;
  11.   END IF;
  12.   return tmp_msg;
  13. END;//
 

Si je call cette function

Code :
  1. func_test('10','francais','boom')
 

La function me retourne nom de table inconue full_table_name
ses comme si la variable lng qui est = a 'francais' et la variable full_table_name qui est = a (boom_msg)  n'etais pas pris en conte. la function cherche vraiment un champ appeller lng dans la table full_table_name

 

est-il possible de faire un select into avec comme ce ci ?

Code :
  1. SELECT [variable] INTO [variable] FROM [variable] WHERE `id` = [variable]
 

Merci de votre aide

 


______________________________
Modo: Merci de lire et de respecter le règlement. Pour cette fois, j'ai mis ce message en conformité moi--même : l'usage de la balise [code] est indispensable ! http://forum-images.hardware.fr/images/perso/sedna.gif


Message édité par zeb le 08-04-2008 à 09:58:06
zeb
Plus d'informations

Ce que tu cherches à faire, c'est du "SQL Dynamique".
 
En ORACLE, on utilise EXECUTE IMMEDIATE.
Sous MySQL, je n'en sais rien. Je regarde.... En attendant, cherche aussi ;)


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
zeb
Plus d'informations

Trouvé @ http://www.developpez.net/forums/s [...] p?t=271532

 
Code :
  1. BEGIN
  2.   SET @tblname="mydb.mytable";
  3.   SET @sql = CONCAT('select * from ', @tblname);
  4.   PREPARE stmt FROM @sql ;
  5.   EXECUTE stmt ;
  6.   DEALLOCATE PREPARE stmt ;
  7. END
 

edit: C'est marrant, c'est le même nom de fonction sous ORACLE et MySQL. :D

 

Enjoy!


Message édité par zeb le 08-04-2008 à 10:05:42

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...

Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » PHP & MySQL & ASP » Function mysql 5
 

Annonces Google
Publicité
Les téléchargements