成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server數(shù)據(jù)庫正確展開層次結(jié)構(gòu)的流程

數(shù)據(jù)庫 SQL Server
以下的文章主要描述的是SQL Server數(shù)據(jù)庫正確展開層次結(jié)構(gòu),以及對(duì)其在實(shí)際操作中要用到的代碼的描述,望你能有所收獲。

以下的文章主要向大家描述的是SQL Server數(shù)據(jù)庫正確展開層次結(jié)構(gòu),我們大家都知道SQL Server數(shù)據(jù)庫經(jīng)常存儲(chǔ)層次信息。就比如下面的數(shù)據(jù)是全球一些地區(qū)的層次表示形式。這種表示形式并未清楚地顯示出數(shù)據(jù)中隱含的結(jié)構(gòu)。

 

  1. Parent Child -------------- -----------------   
  2. World Europe World North America Europe France France Paris North America   
  3. United States North America Canada United States New York United States   
  4. Washington New York New York City Washington Redmond  

而下面的示例則更容易解釋:

  1. World North America Canada United States Washington Redmond New York New York City Europe France Paris 

下面的 Transact-SQL 過程將一個(gè)編碼的層次展開到任意深度。盡管 Transact-SQL 支持遞歸,但是使用臨時(shí)表作為堆棧來跟蹤所有正在處理中的項(xiàng)目(已經(jīng)開始但尚未結(jié)束),將更加有效。某個(gè)項(xiàng)目一旦處理完畢,將被從堆棧中刪除。當(dāng)發(fā)現(xiàn)新的項(xiàng)目時(shí),這些項(xiàng)目將被添加到堆棧中。

  1. CREATE PROCEDURE expand (@current char(20)) as SET NOCOUNT> 

輸入?yún)?shù) (@current) 表示層次中的開始位置。它還跟蹤主循環(huán)中的當(dāng)前項(xiàng)目。

使用的兩個(gè)局部變量分別是 @level(用于跟蹤層次結(jié)構(gòu)中的當(dāng)前級(jí)別)和 @line(是用于構(gòu)造縮進(jìn)行的工作區(qū))。

  1. SET NOCOUNT>  

使用層次中開始點(diǎn)的項(xiàng)目標(biāo)識(shí)符來創(chuàng)建和整理臨時(shí)表 #stack,而 @level 被設(shè)置為與之匹配。#stack 中的 level 列允許同一個(gè)項(xiàng)目出現(xiàn)在SQL Server數(shù)據(jù)庫的多個(gè)級(jí)別中。雖然這種情況不適用于該示例中的地理數(shù)據(jù),但是它可以用于其它示例。

在下面的示例中,當(dāng) @level 大于 0 時(shí),該過程執(zhí)行以下步驟:

1.如果當(dāng)前級(jí)別 (@level) 的堆棧中有任何項(xiàng)目,該過程將選擇其中一個(gè),并稱之為 @current。

2.縮進(jìn)項(xiàng)目 @level 空格,然后打印該項(xiàng)目。

3.從堆棧中刪除該項(xiàng)目以免重復(fù)處理它,然后將其所有子項(xiàng)目添加到堆棧的下一級(jí) (@level + 1) 中。這是唯一使用層次表 (#stack) 的地方。

如果使用傳統(tǒng)的編程語言,就必須找到每個(gè)子項(xiàng)目并將其逐個(gè)添加到堆棧中。而使用 Transact-SQL,只用一個(gè)語句就能找到并添加所有的子項(xiàng)目,以免又使用一個(gè)嵌套循環(huán)。

4.如果有子項(xiàng)目 (IF @@ROWCOUNT > 0),則下降一級(jí)處理它們 (@level= @level + 1);否則,繼續(xù)在當(dāng)前級(jí)別上處理。

5.***,如果在當(dāng)前級(jí)別的堆棧中沒有待處理的項(xiàng)目,則返回到上一級(jí),看上一級(jí)是否有待處理的項(xiàng)目 (@level= @level - 1)。當(dāng)再?zèng)]有上一級(jí)時(shí),則展開完畢。

以上的相關(guān)內(nèi)容就是對(duì)SQL Server數(shù)據(jù)庫如何展開層次結(jié)構(gòu)的介紹,望你能有所收獲。

【編輯推薦】

  1. 創(chuàng)建SQL Server數(shù)據(jù)庫更是實(shí)在
  2. 優(yōu)化SQL Server數(shù)據(jù)庫的經(jīng)驗(yàn)大盤點(diǎn)
  3. SQL Server 2005商業(yè)智能功能淺析
  4. SQL Server 2000數(shù)據(jù)庫備份和還原的示例
  5. SQL Server磁帶備份設(shè)備的性能優(yōu)化過程
責(zé)任編輯:佚名 來源: pycsky.com
相關(guān)推薦

2010-07-06 10:19:15

SQL Server層

2010-07-01 15:02:29

SQL Server數(shù)

2010-06-28 10:36:42

SQL Server數(shù)

2010-07-01 11:14:36

SQL Server

2010-07-07 10:31:43

SQL Server數(shù)

2019-04-26 13:20:24

數(shù)據(jù)庫PostgreSQL Oracle

2010-07-21 10:05:29

SQL Server排

2010-07-01 11:03:04

SQL Server轉(zhuǎn)

2010-07-22 16:07:02

SQL Server數(shù)

2010-06-30 08:27:45

SQL Server數(shù)

2010-07-05 17:41:37

SQL Server

2010-06-29 17:56:47

正確升級(jí)SQL Ser

2010-07-22 10:52:21

SQL Server數(shù)

2010-06-30 15:52:05

2010-07-15 17:28:50

SQL Server

2011-08-04 15:55:25

SQL Server數(shù)

2010-07-16 10:29:02

SQL Server

2010-07-13 09:12:56

SQL Server

2010-06-30 08:46:51

升級(jí)SQL Serve

2010-07-08 11:05:14

SQL Server數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品美女久久久久aⅴ国产馆 | 不卡在线视频 | 成人小视频在线 | 男女网站视频 | 国产日韩精品在线 | www性色 | 久久精品亚洲精品国产欧美 | 久久一区二区三区电影 | 日本一区二区三区在线观看 | 欧美久久久久久久久中文字幕 | 成人福利视频 | 中文字幕福利视频 | 不用播放器看的av | 欧美高清视频一区 | 久久99精品视频 | 国产黄色电影 | 91在线视频播放 | 91精品国产欧美一区二区 | 亚洲精品久久视频 | 久久久久国 | 中文字幕乱码一区二区三区 | 一本一道久久a久久精品蜜桃 | 亚洲精品国产偷自在线观看 | 精品美女在线观看 | www.天堂av.com | 99精品国自产在线观看 | 国产一区二区在线看 | 午夜免费网 | 欧美大片黄| 国产成人综合久久 | 韩三级在线观看 | 欧美精品片 | 欧美视频在线播放 | 有码一区 | 丝袜久久| 婷婷在线免费 | 国产精品一区在线 | 看真人视频一级毛片 | 亚洲精品日本 | 精品国产乱码久久久久久中文 | 免费久久精品 |