[Procédure stockée] Utilisation des paramètres
Mixame
-
Mixame -
Mixame -
Bonjour tout le monde !
Alors voila, pour faire cours, j'affiche le contenu d'une DB sur une feuille excel via un peu de code en VBA. Jusque là pas de problème.
Mon souhait serait de pouvoir réinjecter dynamiquement les modifications apportées sur le document excel, dans la DB.
Pour ce faire, lorsque je modifie le contenu d'une cellule, via une fonction associé je récupère le nom de la table, de la colonne, ainsi que l'ID.
Toujours en VBA, j'appelle une procédure stockée sur ma DB mySQL, avec ces paramètres: ça donne quelque chose du genre:
call ma procdéure(nom_table, nom_col, id, value)
Et donc, ma procédure stockée version simplifiée pour l'exemple:
Je récupère une erreur SQL à l'execution, la table "input_table_name" n'existe pas. Il semblerait que mySQL n'accepte pas mon paramètre à cet endroit et le prenne tout simplement pour le nom de la table.. Pareil pour le nom de la colonne.
Alors est-ce que je fais mal quelque chose, ou est-ce qu'on ne peut tout simplement pas se servir des procédures stockées de cette façon?
Si vous avez d'autres question n'hésitez pas.
Merci d'avance :)
Alors voila, pour faire cours, j'affiche le contenu d'une DB sur une feuille excel via un peu de code en VBA. Jusque là pas de problème.
Mon souhait serait de pouvoir réinjecter dynamiquement les modifications apportées sur le document excel, dans la DB.
Pour ce faire, lorsque je modifie le contenu d'une cellule, via une fonction associé je récupère le nom de la table, de la colonne, ainsi que l'ID.
Toujours en VBA, j'appelle une procédure stockée sur ma DB mySQL, avec ces paramètres: ça donne quelque chose du genre:
call ma procdéure(nom_table, nom_col, id, value)
Et donc, ma procédure stockée version simplifiée pour l'exemple:
CREATE DEFINER=`root`@`localhost` PROCEDURE `updateTable`(input_table_name varchar(30), input_col_name varchar(30), input_id int, input_string_value varchar(30))
BEGIN
UPDATE input_table_name
SET input_col_name = input_string_value
WHERE id = input_id;
END
Je récupère une erreur SQL à l'execution, la table "input_table_name" n'existe pas. Il semblerait que mySQL n'accepte pas mon paramètre à cet endroit et le prenne tout simplement pour le nom de la table.. Pareil pour le nom de la colonne.
Alors est-ce que je fais mal quelque chose, ou est-ce qu'on ne peut tout simplement pas se servir des procédures stockées de cette façon?
Si vous avez d'autres question n'hésitez pas.
Merci d'avance :)
A voir également:
- [Procédure stockée] Utilisation des paramètres
- Utilisation chromecast - Guide
- Télécharger gratuitement notice d'utilisation - Guide
- Parametres de mon ordinateur - Guide
- Paramètres dns - Guide
- Paramètres de confidentialité - Guide
1 réponse
Bonjour,
Ceci semble fonctionner correctement :
Ceci semble fonctionner correctement :
DROP PROCEDURE IF EXISTS updateTable; DELIMITER | -- On change le délimiteur CREATE PROCEDURE `updateTable`(input_table_name varchar(30), input_col_name varchar(30), input_id int, input_string_value varchar(30)) BEGIN SET @q = CONCAT('UPDATE ',input_table_name,' SET ', input_col_name, ' = "', input_string_value,'" WHERE id=',input_id); PREPARE stmt FROM @q; EXECUTE stmt; END | DELIMITER ; -- On remet le délimiteur par défaut
La solution proposée semble fonctionner, je vais avancer sur mon projet en l'utilisant, je verrais ce que ça donne !
Merci, bonne continuation