我正在尝试创建一个返回值整数的函数
(基于称为BOOKCAT的表中的索引数量)
第一个即时通讯试图加载表格以确保其运行,但是,我一直收到错误消息,说分隔符不是有效位置
(这是我对函数的经验)
.Ref是用于识别预订中保留的猫ID数量的外键
此表的结果如下所示:
BOOKCAT
Ref CatID
'1', '1'
'2', '2'
'2', '3'
'3', '1'
'4', '2'
'5', '3'
'5', '4'
'6', '5'
'7', '6'
'7', '7'
'7', '8'
DELIMITER |
CREATE FUNCTION Calc(ReferenceNumber INTEGER)
RETURNS INTEGER
BEGIN
DECLARE NUMCATS INTEGER;
SELECT SUM(BOOKCAT.Ref = ReferenceNumber)
FROM BOOKCAT;
SET NUMCATS = SUM(BOOKCAT.Ref = ReferenceNumber);
RETURN NUMCATS;
END|
DELIMITER;
答案 0 :(得分:1)
如果没有选择,则set语句是错误的-它没有bookcat的概念。最简单的更改是选择并在定界符前加空格。另外,如果ref和catid是整数,则无需引用插入值。
drop table if exists t;
create table t(Ref int, CatID int);
insert into t values
(1,1),
(2,2),
(2,3),
(3,1),
(4,2),
(5,3),
(5,4),
(6,5),
(7,6),
(7,7),
(7,8);
drop function if exists f;
DELIMITER |
CREATE FUNCTION f(ReferenceNumber INTEGER)
RETURNS INTEGER
BEGIN
DECLARE NUMCATS INTEGER;
SELECT SUM(BOOKCAT.Ref = ReferenceNumber) into numcats
FROM t bookcat;
#SET NUMCATS = SUM(BOOKCAT.Ref = ReferenceNumber);
RETURN NUMCATS;
END |
DELIMITER ;
select f(7);
+------+
| f(7) |
+------+
| 3 |
+------+
1 row in set (0.001 sec)