MySQLストア関数を書くのはこれが初めてですが、何が間違っていたのかを確認するのに問題があります:
ここに私のテーブルと関数があります:
mysql> select * from PathNames;
+-----+--------+-----+
| NID | Name | PID |
+-----+--------+-----+
| 1 | / | 1 |
| 6 | US | 1 |
| 7 | TX | 6 |
| 8 | Dallas | 7 |
| 9 | Plano | 7 |
| 10 | Frisco | 7 |
+-----+--------+-----+
DROP FUNCTION IF EXISTS NID2PathName;
DELIMITER //
CREATE FUNCTION NID2PathName(nid INT UNSIGNED)
RETURNS TEXT DETERMINISTIC
BEGIN
DECLARE rtn TEXT;
DECLARE str TEXT;
DECLARE tmp TEXT;
DECLARE id INT UNSIGNED;
DECLARE pid INT UNSIGNED;
SET id = nid;
SET rtn = "";
SET str = "";
SET tmp = "";
WHILE id > 1 DO
SELECT Name, PID into str, pid FROM PathNames WHERE NID=id LIMIT 1;
SET rtn = CONCAT('/', str, rtn);
set id = pid;
END WHILE;
RETURN rtn;
END//
DELIMITER ;
SELECT NID2PathName(10);
SELECT NID2PathName(10)
がを返すことを期待して"/US/TX/Frisco"
いますが、 しか得られません"//"
。どんな助けでも大歓迎です。