sql - MySql从存储过程中调用存储函数导致错误

标签 sql mysql stored-procedures mysql-error-1064 stored-functions

尝试从存储过程中调用存储函数时出现 1064 错误。它只发生在我尝试这样做的行上:SET account_id = get_account_id(user);。问题是什么,我该如何解决?

账户 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

最佳答案

我什至不知道我尝试做的事情是否可能导致错误。但是我通过调用 SF 作为参数调用 SP 找到了解决方法,并让它执行我需要它执行的操作。

代码是:CALL build_report_portfolio_list(get_account_id('username_here'));

关于sql - MySql从存储过程中调用存储函数导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4055434/

相关文章:

sql - 将字符串转换为 SSIS 包中的十进制值

mysql - mySQL 更新查询中的语法错误

sql-server - 可以使用 T-SQL 对存储过程的结果进行排序吗?

mysql查询输出投影仪和白板

sql - 如何调用 pl/sql 存储过程(函数,返回数值)?

c# - 为什么 EF 将 char 属性视为实际的 guid?

php - PHP 生成表上的 jQuery 表搜索过滤器

mysql - UNION 失去了对 GROUP BY 列的功能依赖

sql - 我可以将 sql 存储过程参数默认为动态表达式吗?

mysql - #1111 - 存储过程 mysql 中组函数错误的无效使用