Sql 根据子节点查找根节点

use master
go
if exists(select * from sysdatabases where name ='ElectronicInfo')
drop database ElectronicInfo
go
 --======================================
 --创 建 者 :zhumac
 --创建时间 : 2011-05-12
 --说    明 :创建数据库
 --======================================
create database ElectronicInfo
on
(
   filename='G:/ElectronicInfo/web/App_Data/ElectronicInfo_data.mdf',
   name    = 'ElectronicInfo_data',
   size =5mb,
   filegrowth=1mb
)
log on
(
    filename ='G:/ElectronicInfo/web/App_Data/ElectronicInfo_log.ldf',
    name ='ElectronicInfo_log',
    size = 5mb,
    filegrowth=1mb
)
go
use ElectronicInfo
go
 --======================================
 --创 建 者 :zhumac
 --创建时间 : 2011-05-12
 --说    明 :创建菜单表
 --======================================
if exists(select * from sysobjects where name ='Menu')
drop table Menu
go
create table Menu
(
    MenuID               int not null identity(1,1) primary key ,          --主键 自动增长
    MenuName         nvarchar(30) not null,                                   --菜单名
    ParentID            int                                                                 --父菜单主键
)

go

 --======================================
 --创 建 者 :zhumac
 --创建时间 : 2011-05-12
 --说    明 :创建存储过程

 --======================================

if exists(select * from sysobjects where name = 'GetRootCategoryID')
drop procedure GetRootCategoryID
go
CREATE PROCEDURE GetRootCategoryID
 @nodeID INT
AS
BEGIN
 SET NOCOUNT ON;
    DECLARE @rootID INT, @currentID INT

    SELECT @rootID = ParentID, @currentID = @nodeID FROM Menu WHERE MenuID = @nodeID;
    WHILE @rootID >0
    BEGIN
     SELECT @rootID =ParentID , @currentID = MenuID FROM Menu WHERE MenuID = @rootID;
    END
    select @currentID
END

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值