SQL Server 2005使用關聯式資料庫儲存CFG

來源:互聯網
上載者:User
本文介紹的是用關聯式資料庫來儲存CFG(控制流程程圖)的資訊。在查詢時,為了得到所有dominate關係的結果,使用了CTE來進行遞迴查詢。

本文介紹的是用關聯式資料庫來儲存CFG(控制流程程圖)的資訊。在查詢時,為了得到所有dominate關係的結果,使用了CTE來進行遞迴查詢。

簡單例子如下:

1. 現有表testRe結構如下

2. 欲得到的查詢結果為找到id='a'的項的所有pId,即b、c、d。

3. 使用CTE做遞迴查詢:

WITH Re_CTE(id, pId, Level)Technorati 標籤: sql server,CTE,遞迴,查詢AS (     SELECT  id, pId, 1 AS [Level]     FROM  testRe     WHERE id='a'      UNION ALL     SELECT  t.id, t.pId, [Level] + 1     FROM  testRe t  INNER JOIN Re_CTE ct     ON t.id=ct.pId ) SELECT * FROM Re_CTE

其中,Level為可選項

4. 查詢結果為:

5. CTE的簡單說明(參考MSDNhttp://msdn.microsoft.com/zh-cn/library/ms186243%28SQL.90%29.ASPx):

WITH cte_name(column_name [,...n]) AS ( CTE_query_definition –- Anchor member is defined. UNION ALL CTE_query_definition –- Recursive member is defined referencing cte_name. ) -- Statement using the CTE SELECT * FROM cte_name

一個遞迴 CTE 結構必須至少包含一個錨點成員和一個遞迴成員。

執行時:

將 CTE 運算式拆分為錨點成員和遞迴成員。

運行錨點成員,建立第一個調用或基準結果集 (T0)。

運行遞迴成員,將 Ti 作為輸入,將 Ti+1 作為輸出。

重複步驟 3,直到返回空集。

返回結果集。這是對 T0 到 Tn 執行 UNION ALL 的結果。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.