1
更換ColdFusion的遞歸函數調用我有一個名爲dbo.Node表:與公用表表達式(CTE)
NodeID int
ParentNodeID int
Title
以下功能顯示
<cffunction name="getNodePath" returnType="string">
<cfargument name="NodeID" required="false" default="">
<cfset var qryNode = "">
<cfif NOT isNumeric(arguments.nodeID)>
<cfreturn "">
</cfif>
<cfquery name="qryNode" cachedWithin="#CreateTimeSpan(0,0,1,0)#">
SELECT ParentNodeID, Title
FROM dbo.Node WITH (NOLOCK)
WHERE NodeID = <cfqueryparam CFSQLType="CF_SQL_INTEGER" value="#arguments.NodeID#">
</cfquery>
<cfreturn getNodePath(qryNode.ParentNodeID) & qryNode.Title & " » ">
</cffunction>
該代碼使用cacheWithin層次因爲已知許多相同的父路徑將被調用。平均而言,這會從原始頁面調用約20次。總的來說,由於查詢的遞歸性質,它被稱爲100次。而且這個函數返回一個字符串。這意味着格式不在視圖中。
有沒有辦法用CTE代替它?