请问这个函数语句怎样写?

jbas 2006-06-12 04:43:53
我的表结构:
pkey parKey dname dataType
1 0 a mst
2 0 b mst
14 2 c nar
15 14 d nar

我想写一个函数,达到的效果是:
当我执行: fSpMenu(15) 时,结果是2
也就是当parKey=0进为止,同时取其pkey

我的函数总有错误请执教:
create function fSpMenu(@id int)
returns varchar(10)
as
begin
declare @str varchar(10)
select @str=pkey,@id=parkey from vMenu where dataType='nar' and pkey=@id
while (@id<>0 and @@rowcount<>0)
begin
select @str=pkey,@id=parkey from vMenu where pkey=@id
end
return @str
End
go

分不多了,谢谢了!
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jbas 2006-06-13
  • 打赏
  • 举报
回复
scmail81(琳·风の狼(修罗)) 老大

你的太复杂了吧,看不懂了,有没有简单一点的啊。
$扫地僧$ 2006-06-12
  • 打赏
  • 举报
回复
create table A
(
pkey int,
parKey int,
dname varchar(10),
dataType varchar(10)
)

insert A select 1,0,'a','mst'
insert A select 2,0,'b','mst'
insert A select 14,2,'c','nar'
insert A select 15,14,'d','nar'

create function fSpMenu(@id int)
returns varchar(10)
as
begin
declare @T table(pkey int,parKey int,lev int)
declare @lev int
declare @T_pkey varchar(10)
set @lev=1
insert @T select pkey,parKey,@lev from A where parKey<>0 and pkey=@id
while @@rowCount >0
begin
set @lev=@lev+1
insert @T select pkey,parKey,@lev from A where parKey<>0 and pkey in (select parKey from @T where lev=@lev-1)

end
select top 1 @T_pkey=cast(parKey as varchar) from @T order by lev DESC
return @T_pkey
end

select dbo.fSpMenu(15)
冷箫轻笛 2006-06-12
  • 打赏
  • 举报
回复
datatype是用来做什么的阿?
dssw 2006-06-12
  • 打赏
  • 举报
回复
没有看懂你的意思。
看你的函数,有死循环的意思。
不如使用游标。
jbas 2006-06-12
  • 打赏
  • 举报
回复
大家帮一下啊
jbas 2006-06-12
  • 打赏
  • 举报
回复
guanjm(坚持到底)
老兄,有问题了,函数会死的。
guanjm 2006-06-12
  • 打赏
  • 举报
回复
create function fSpMenu(@id int)
returns varchar(10)
as
begin
declare @str varchar(10)
declare @id1 int
select @str=pkey,@id1=parkey from vMenu where dataType='nar' and pkey=@id
while (@id1<>0 and @@rowcount<>0)
begin
select @str=pkey,@id1=parkey from vMenu where pkey=@id
end
return @str
End
go

34,872

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧