Je reçois une erreur 1064 lorsque j'essaie d'appeler une fonction stockée depuis une procédure stockée. Cela n'arrive que sur la ligne où j'essaie de faire ceci: SET account_id = get_account_id(user);
. Quel est le problème et comment puis-je le réparer?Appel de la fonction stockée MySql depuis une procédure stockée provoquant une erreur
compte ID: Fonctions stockées
CREATE DEFINER=`aaron`@`%` FUNCTION `get_account_id`(user VARCHAR(255)) RETURNS int(11)
BEGIN
DECLARE xaccount_id INT DEFAULT 0;
#Get Account ID and place into variable used when calling stored procedure that builds the tree structure for the leaf node portfolio id
SELECT account_id
FROM rst_sessions.session_data
WHERE username = user
ORDER BY update_date DESC LIMIT 1
INTO xaccount_id;
RETURN xaccount_id;
END
procédure stockée qui tente d'appeler la fonction stockée:
CREATE DEFINER=`aaron`@`%` PROCEDURE `build_report_portfolio_list`(user VARCHAR(255))
READS SQL DATA
BEGIN
DECLARE portf_id INT;
DECLARE portf_name VARCHAR(255);
DECLARE str_portf_parent_list VARCHAR(455);
DECLARE done INT DEFAULT 0;
DECLARE account_id INT;
SET account_id = get_account_id(user);
END
Je ne vois pas le point de la fonction - utilise la requête de la fonction au sein de la procédure stockée. Et je pensais que INTO devait être avant la clause FROM ... –
bien, j'ai laissé de côté le point de la fonction ... la fonction reçoit un nom d'utilisateur et interroge une table pour récupérer le account_id, puis retourne cet identifiant de compte dans une variable appelée account_id, qui est ensuite utilisée pour une autre requête (le code après le "SET account_id") que j'ai omis pour faciliter la lecture ... si je commente la ligne "SET account_id ....." alors je N'obtenez aucune erreur. – Ronedog