--首先创建这样的自定义函数
create function f_getchildid(@id int)
returns @re table(id int)
as
begin
insert into @re values(@id)
while @@rowcount>0
insert into @re select a.id
from 表 a inner join @re b on a.parentid=b.id
where a.id not in(select id from @re)
return
end
go
create function f_getchildid(@id int)
returns @re table(id int)
as
begin
insert into @re values(@id)
while @@rowcount>0
insert into @re select a.id
from 表 a inner join @re b on a.parentid=b.id
where a.id not in(select id from @re)
return
end
go
解决方案 »
- SQL 语句,如何在 能不能在where 里嵌套查询?
- sql server 2000的企业管理器导出表的默认地址是?
- 请问如何将一个表从竖着转换成横的?主要是其中某一些值是没有,要用0替代,谢谢!
- 求救sql语句
- Declare @sql varchar(200) Set @sql='Select ID,Name from USER' 怎么在存储过程里循环结果,游标不行
- ★★★★★★跪求SQL-Server7下载!!!★★★★★★
- 数据库结构设计问题。
- csdn被黑了,登录不了啦!
- 请问一个关于数据库死锁的问题
- 急问:ado和odbc有何区别?
- 如何从系统表中得知一列是否是外键列?
- delphi+ado+sqlserver的一个问题
select a.* from 表 a join dbo.f_getchildid(1) on a.id=b.id
RETURNS varchar(100)
AS
BEGIN
DECLARE @pid int, @str varchar(100)
SELECT @str = name, @pid = parentID FROM TAB1 WHERE ID = @id
RETURN CASE WHEN @pid = 0 THEN @str ELSE dbo.getParent(@pid) + @str END
END
GOSELECT dbo.getstr(4)
SELECT dbo.getstr(5)
GO
RETURNS varchar(100)
AS
BEGIN
DECLARE @pid int, @str varchar(100)
SELECT @str = name, @pid = parentID FROM TAB1 WHERE ID = @id
RETURN CASE WHEN @pid = 0 THEN @str ELSE dbo.getstr(@pid) + @str END
END
GO