Mysql函数1064错误

标签 mysql function mysql-error-1064

下面的内容适用于旧版本的 MySQL。

但我不知道问题出在哪里。

参数:

aId - int usigned
sId - int usigned

功能:

BEGIN

DECLARE test decimal;

SELECT lft into @myLeft FROM `vw_accounts` WHERE accountId = aId;
SELECT rgt into @myRight FROM `vw_accounts` WHERE accountId = aId;
SELECT (rgt - lft + 1) into @myWidth FROM `vw_accounts` WHERE accountId = aId;

SELECT sum(value) as v into test FROM `vw_accounts` 
WHERE lft 
BETWEEN @myLeft AND @myRight AND subjectId = sId;

RETURN test;

END

错误:

The following query has failed: "CREATE FUNCTION `get_all_money_account`(`aId` INT UNSIGNED, `sId` INT UNSIGNED) RETURNS DECIMAL(decimal(12,2)) COMMENT 'vrátí součet všech účtů pod vybraným' NOT DETERMINISTIC READS SQL DATA SQL SECURITY DEFINER BEGIN

DECLARE test DECIMAL;

SELECT lft into @myLeft FROM `vw_accounts` WHERE accountId = aId;
SELECT rgt into @myRight FROM `vw_accounts` WHERE accountId = aId;
SELECT (rgt - lft + 1) into @myWidth FROM `vw_accounts` WHERE accountId = aId;

SELECT sum(value) as v into test FROM `vw_accounts` 
WHERE lft 
BETWEEN @myLeft AND @myRight AND subjectId = sId;

RETURN test;

END"

旧脚本:

CREATE DEFINER=`root`@`localhost` FUNCTION `get_all_money_account`(`aId` INT(10) UNSIGNED, `sId` INT(10) UNSIGNED) RETURNS decimal(12,2)
    READS SQL DATA
    COMMENT 'vrátí součet všech účtů pod vybraným'
BEGIN

DECLARE test float;

SELECT lft into @myLeft FROM `vw_accounts` WHERE accountId = aId;
SELECT rgt into @myRight FROM `vw_accounts` WHERE accountId = aId;
SELECT (rgt - lft + 1) into @myWidth FROM `vw_accounts` WHERE accountId = aId;

SELECT sum(value) as v into test FROM `vw_accounts` 
WHERE lft 
BETWEEN @myLeft AND @myRight AND subjectId = sId;

RETURN test;
END

最佳答案

您是否考虑过进行自加入?

SELECT SUM(b.value)
FROM   vw_accounts a
  JOIN vw_accounts b ON b.lft BETWEEN a.lft AND a.rgt
WHERE  a.accountId = ?
   AND b.subjectId = ?

关于Mysql函数1064错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580894/

相关文章:

c++ - 如何将 STL vector 传递给采用 const [] 的函数 (c++)

php - 用于在 '' 附近使用正确语法的 MySQL 服务器版本

mysql - 配置mysql服务器安装失败或无法启动服务

php - 使用 INNER JOIN 在 MYSQL QUERY 中检查条件并进行计算

php - 将 switch 语句与 fetch_array 结合使用

php - mysqli准备语句问题

function - 使用列表 cons 运算符 (a::b) 作为函数

c++ - 为什么堆栈溢出会导致总线错误 10 而不是段错误

java - 线程中的异常 "main"java.sql.SQLException : Incorrect file format 'inter'

MySQL 限制事件发生在什么时候