MySql вызывает хранимую функцию из хранимой процедуры, вызывая ошибку - PullRequest
6 голосов
/ 29 октября 2010

Я получаю ошибку 1064 при попытке вызвать хранимую функцию из хранимой процедуры.Это происходит только на линии, где я пытаюсь сделать это: SET account_id = get_account_id(user);.В чем проблема и как ее исправить?

Идентификатор учетной записи Хранимые функции:

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

1 Ответ

7 голосов
/ 30 октября 2010

Я даже не знаю, было ли возможно то, что я пытался сделать, что могло вызвать ошибку.Но я нашел обходной путь, вызвав SF как параметр для вызова SP и заставив его делать то, что мне было нужно.

Код: CALL build_report_portfolio_list(get_account_id('username_here'));

...