Я получаю ошибку 1064 при попытке вызвать хранимую функцию из хранимой процедуры. Это происходит только на линии, где я пытаюсь это сделать: SET account_id = get_account_id(user);
. В чем проблема и как я могу это исправить?MySql вызов хранимой функции из хранимой процедуры, вызывающей ошибку
данные ID Хранится Функции:
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
хранимая процедура, которая пытается вызвать хранимую функцию:
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
Я не вижу смысла функции - используйте запрос от функции внутри хранимой процедуры. И я, хотя это INTO должно было быть перед предложением FROM ... –
ну, я оставил точку функции ... функция получает имя пользователя и запрашивает таблицу для извлечения account_id, а затем возвращает этот идентификатор учетной записи обратно в переменную, называемую account_id, которая затем используется для другого запроса (код после «SET account_id»), который я забыл для удобства чтения ... если я прокомментирую строку «SET account_id .....», тогда я не получайте никаких ошибок. – Ronedog