SQL Server 2008新版CTP特性解读(三)

日期: 2008-07-06 作者:Denny Cherry 来源:TechTarget中国 英文

对于HierarchyID数据类型,系统中有一些系统函数和方法与之相联系。有一些像GetLevel(),ParentChildOrg(),DescendantLimit()和GetAncestor()。下面显示了一个简单的经理和雇员之间的父子关系的例子。   create TABLE Organization    (    NodeLevel hierarchyid,    EmployeeID int,    OrgLevel as NodeLevel.GetLevel(),&nb……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

对于HierarchyID数据类型,系统中有一些系统函数和方法与之相联系。有一些像GetLevel(),ParentChildOrg(),DescendantLimit()和GetAncestor()。下面显示了一个简单的经理和雇员之间的父子关系的例子。  

create TABLE Organization 
  ( 
  NodeLevel hierarchyid, 
  EmployeeID int, 
  OrgLevel as NodeLevel.GetLevel(), 
  EmployeeName nvarchar(50) NOT NULL 
  ) ; 
  GO 
  insert into Organization 
  (NodeLevel, EmployeeID, EmployeeName) 
  values 
  (hierarchyid::GetRoot(),0, ’Bob’) 
  go 
  Declare @Manager hierarchyid 
  select @Manager = hierarchyid::GetRoot() 
  FROM Organization ; 
  insert into Organization 
  (NodeLevel, EmployeeId, EmployeeName) 
  values 
  (@Manager.GetDescendant(null, null), 1, ’Joe’) 
  go 
  Declare @Manager hierarchyid 
  declare @NodeLevel hierarchyid 
  select @NodeLevel = NodeLevel 
  from Organization 
  where EmployeeName = ’Joe’ 
  select @Manager = max(NodeLevel) 
  FROM Organization 
  where NodeLevel.GetAncestor(1) = @NodeLevel 
  insert into Organization 
  (NodeLevel, EmployeeID, EmployeeName) 
  values 
  (@NodeLevel.GetDescendant(@Manager, null),2, ’Sarah’) 
  go 
  select NodeLevel.ToString()as NodeLevel_String, * 
  FROM Organization 
  go 
  drop table Organization 
  go 

  select语句的输出就像下面一样: 

NodeLevel_StringNodeLevelEmployeeIDOrgLevelEmployeeName 
  /0x00Bob 
  /1/0x5811Joe 
  /1/1/0x5AC022Sarah 

相关推荐