存储过程例题(1)

例:该存储过程是从某结点n开始找到最上层的父亲结点,这种经常用到的过程可以由存储过程来担当,在网页中重复使用达到共享。

空:表示该结点为顶层结点

fjdid(父结点编号) 

结点n 非空:表示该结点的父亲结点号

dwmc(单位名称)


create proc search_dwmc @dwidold int,@dwmcresult varchar(100) output
as 
declare @stop int
declare @result varchar(80)
declare @dwmc varchar(80)
declare @dwid int
set nocount on
set @stop=1
set @dwmc=""
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold 
set @result=rtrim(@dwmc)
if @dwid=0 
set @stop=0
while (@stop=1) and (@dwid<>0)
begin
set @dwidold=@dwid
select @dwmc=dwmc,@dwid=convert(int,fjdid) from jtdw where id=@dwidold
if @@rowcount=0 
set @dwmc=""
else
set @result=@dwmc+@result
if (@dwid=0) or (@@rowcount=0) 
set @stop=0
else
continue
end
set @dwmcresult=rtrim(@result)

使用exec pro-name  [pram1 pram2.....]
 

本文来自学习网(www.gzu521.com),原文地址:http://www.gzu521.com/campus/article/program/200803/165794.htm

posted @ 2008-11-06 09:54  翔宇编程  阅读(473)  评论(0编辑  收藏  举报
51CTO