我有一个表格处理程序,其中包括<代码>ID(未签字的编码、自动编码)和<代码>Name(独有的)。
以任何投入(无论在表格中)来选择以下职能,总是会产生结果。
ERROR 1172 (42000): 结果包括一行以上。
CREATE FUNCTION LookupOrInsertProcess(nametwo VARCHAR(255))
RETURNS INT UNSIGNED
BEGIN
DECLARE myid INT UNSIGNED;
SELECT ID INTO myid FROM Processes WHERE Name=nametwo;
RETURN myid;
END$$
但是,选择以下职能总是返回全国人民代表大会:
CREATE FUNCTION LookupOrInsertProcess(nametwo VARCHAR(255))
RETURNS INT UNSIGNED
BEGIN
DECLARE myid INT UNSIGNED;
SELECT ID INTO myid FROM Processes WHERE Name=nametwo;
RETURN myid;
END$$
此外,请指出以下事实确实反映了正确的结果(第30和50号是任意的):
CREATE FUNCTION LookupOrInsertProcess(nametwo VARCHAR(255))
RETURNS INT UNSIGNED
BEGIN
DECLARE myid INT UNSIGNED;
SELECT ID INTO myid FROM Processes WHERE Name=nametwo;
IF myid IS NULL THEN
RETURN 30;
ELSE
RETURN 50;
END IF;
END$$
感谢任何帮助。
UPDATE:Edited,以消除表格栏和功能段之间的冲突。 我不相信这个问题。
UPDATE2:请指出,在投入部分已经或没有列入表格的情况下,以下两个部分似乎都在工作。 为什么没有表层的表层输入灯片,联合国扫盲十年的功能甚至回报?
CREATE FUNCTION LookupOrInsertProcess(nametwo VARCHAR(255))
RETURNS INT UNSIGNED
BEGIN
DECLARE myid INT UNSIGNED;
SELECT ID INTO myid FROM Processes WHERE Name=nametwo;
RETURN COALESCE(myid, 0);
END$$