Recibo un error 1064 cuando intento llamar a una función almacenada desde un procedimiento almacenado. Solo sucede en la línea donde trato de hacer esto: SET account_id = get_account_id(user);
. ¿Cuál es el problema y cómo puedo solucionarlo?MySql llamando a la función almacenada desde un procedimiento almacenado que causa el error
Cuenta ID almacenado Funciones:
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
procedimiento almacenado que está intentando llamar a la función almacenada:
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
no veo el punto de la función - utilizar la consulta de la función en el procedimiento almacenado. Y pensé que INTO necesitaba estar antes de la cláusula FROM ... –
Bueno, dejé fuera el punto de la función ... la función recibe un nombre de usuario y consulta una tabla para recuperar el account_id, luego devuelve ese ID de cuenta nuevamente a una variable llamada account_id, que luego se utiliza para otra consulta (el código después de "SET account_id") que dejé fuera para facilitar la lectura ... si hago un comentario sobre la línea "SET account_id ....." entonces no obtengas ningún error – Ronedog