我正在尝试在mysql 5.1中编写一个存储函数,它返回给定房间的值'AccountIDref'。如果我只查询内部SELECT语句,则可以工作(返回room的值)。但是调用函数我得到了响应:
'#1172 - 结果由多行'
组成CREATE FUNCTION getAccountId (room INT) RETURNS INT
BEGIN
DECLARE refID INT DEFAULT NULL;
SELECT AccountIDref INTO refID FROM Allocation
WHERE Room = room;
RETURN refID;
END
我在这里做错了什么?
答案 0 :(得分:1)
字段名称和参数名称必须不同 -
CREATE FUNCTION getAccountId (room_param INT) RETURNS INT
BEGIN
DECLARE refID INT DEFAULT NULL;
SELECT AccountIDref INTO refID FROM Allocation
WHERE Room = room_param;
RETURN refID;
END
在你的功能中,你得到了所有的桌面记录。
答案 1 :(得分:0)
我要建议的内容与你的内容没什么不同,但我对下一行where
条款持怀疑态度,并且明确地使用limit 1
设定限额。
试试这个:
CREATE FUNCTION getAccountId (room INT) RETURNS INT
BEGIN
DECLARE refID INT DEFAULT NULL;
SELECT AccountIDref INTO refID FROM Allocation WHERE Room = room LIMIT 1;
RETURN refID;
END