【发布时间】:2014-01-29 15:51:17
【问题描述】:
我有一个包含 3 列 directory_id、目录名和 root_directory 的表名 css_diectory。我在此表中存储分层目录结构。我编写了一个程序来检索给定 directory_id 的所有后代。但它不起作用。谁能帮帮我吗。 这是程序
CREATE PROCEDURE getDescendants
(IN rootId varchar(32), INOUT desecendantsFolderId varchar(3200))
BEGIN
DECLARE endOfRecord INTEGER DEFAULT 0;
DECLARE folderId varchar(32) DEFAULT "";
DECLARE folderName varchar(32) DEFAULT "";
DECLARE folderCursor CURSOR FOR
Select directory_id, directory_name from css_directory where root_directory=rootId;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET endOfRecord = 1;
OPEN folderCursor;
getFolderId: LOOP
FETCH folderCursor INTO folderId, folderName;
IF endOfRecord = 1 THEN
LEAVE getFolderId;
END IF;
Call getDescendants(folderId,desecendantsFolderId);
SET desecendantsFolderId = CONCAT(folderId,",",desecendantsFolderId);
call getDescendants(folderId,desecendantsFolderId);
END LOOP getFolderId;
END
编辑:这个过程的输出总是一个空集。它不会产生任何错误
【问题讨论】:
-
请比“它不起作用”更具体。此外,您可能会检查结尾附近“flderId”中的拼写错误。
-
这不仅仅是打字错误。我编辑了问题。
标签: mysql sql stored-procedures recursion