Oracle 9i数据库表的Coldfusion递归函数

Oracle 9i数据库表的Coldfusion递归函数,oracle,recursion,coldfusion,Oracle,Recursion,Coldfusion,我有以下问题:在Oracle 9i数据库中,我有一个表,它有一个位置列表,每个位置都有子位置,每个子位置也有另一个子位置。我想做一个函数来获取某个位置的所有子位置 这是我做的,它不起作用 <cffunction name="getLocationHierarchy" access="public" returntype="string"> <cfargument name="locationID" type="string" required="yes"&

我有以下问题:在Oracle 9i数据库中,我有一个表,它有一个位置列表,每个位置都有子位置,每个子位置也有另一个子位置。我想做一个函数来获取某个位置的所有子位置

这是我做的,它不起作用

<cffunction name="getLocationHierarchy" access="public" returntype="string">
        <cfargument name="locationID"    type="string" required="yes">
        <cfargument name="subLocations"  type="string" required="no" default="">

        <cfquery name="qry_getLocation">
            select ID from locations l
                where l.parentlocationid = #locationID#
        </cfquery>
        <cfif qry_getLocation.recordCount>
            <cfset ListAppend(subLocations,qry_getLocation.ID)>
            <cfset getLocationHierarchy(qry_getLocation.ID,subLocations)>
        </cfif>

        <cfreturn subLocations>
    </cffunction>

非常感谢您的帮助

我通过执行以下查询修复了它

SELECT *
   FROM locations l
   START WITH l.id = 35
   CONNECT BY PRIOR l.ID = l.parentlocationid

现在我可以得到我想要的数据了,谢谢

qry_getLocation.recordCount总是等于1还是0?否则,您需要处理它返回的每个记录。在切线处开始-阅读嵌套集模型-非常方便地存储分层数据:记录计数返回1个或多个记录,因此我更新了代码以循环查询,但我仍然只得到了2或3个值,其中我应该得到关于使用哪个数据库的信息?SqlServer?如果您使用的是oracle数据库,请查找.9g?我以为是9i还是10g?无论哪种方式,9都是通过Previor进行连接的,这就是您希望在这里使用它在DB端而不是应用程序端完成工作的地方。您尝试的方法无法在应用程序站点上扩展。旁注:始终在函数中使用变量变量。尤其是那些被递归调用的!还可以在返回层次结构级别的select中添加级别LevelNumber