【发布时间】:2019-07-26 15:19:42
【问题描述】:
我仍然使用MariaDB10、Beaver 6.1.3。我创建了一个在DBeaver 中运行良好的 SQL 查询。现在我想将其更改为存储过程,但仍然没有成功。
以下是我的代码:
DELIMITER //
CREATE PROCEDURE hibiscus.findAllForPivot
(
IN jahr varchar(4), IN kontos VARCHAR(500)
)
BEGIN
select
VCT.l1_Id,
VCT.l1_GroupName,
VCT.l2_Id,
VCT.l2_GroupName,
sum( case when (VCT.monat = 1) then dbetrag end ) AS `jan`,
sum( case when VCT.monat = 2 then dbetrag end ) AS `feb`,
sum( case when VCT.monat = 3 then dbetrag end ) AS `mrz`,
sum( case when VCT.monat = 4 then dbetrag end ) AS `apr`,
sum( case when VCT.monat = 5 then dbetrag end ) AS `mai`,
sum( case when VCT.monat = 6 then dbetrag end ) AS `jun`,
sum( case when VCT.monat = 7 then dbetrag end ) AS `jul`,
sum( case when VCT.monat = 8 then dbetrag end ) AS `aug`,
sum( case when VCT.monat = 9 then dbetrag end ) AS `sep`,
sum( case when VCT.monat = 10 then dbetrag end ) AS `okt`,
sum( case when VCT.monat = 11 then dbetrag end ) AS `nov`,
sum( case when VCT.monat = 12 then dbetrag end ) AS `dez`
from hibiscus.V_HibCrosUmsGiroOpaOmaReport VCT
where VCT.jahr = jahr and VCT.konto_id in (kontos)
group by VCT.L1_id, VCT.L1_GroupName, VCT.L2_id, VCT.L2_GroupName;
END
//
DELIMITER ;
我总是收到以下错误:
SQL-Fehler [1064] [42000]: (conn:26) 你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以获取正确的语法,以便在第 26 行的 '' 附近使用
查询是:CREATE PROCEDURE hibiscus.findAllForPivot
- 如果我删除
group by行,第 25 行也会出现同样的错误 - 如果我单独使用带有
where和group by的完整select语句,一切正常! - 我仔细检查了表格中的列。
我会因为找不到原因而生气。
表格的列是(通过复制粘贴输入):
dBetrag
id
Jahr
JahrMonat
konto_id
L1_GroupName
L1_id
L2_GroupName
L2_id
Monat
提前谢谢你
rgds 奥帕海因茨
【问题讨论】:
-
这段代码没有问题,我无法重现您的问题。正在发生您没有发现的其他事情。
-
不要使用与列名相同的参数名;你可能得不到你所期望的。一种约定:参数前加下划线。