日期:2014-05-18  浏览次数:20538 次

列出所有父节点的函数问题
以下是一个列出所有父节点的函数

create function f_pid(@id varchar(3)) returns @t_level table(id varchar(3))
as
begin
  insert into @t_level select @id
  select @id = pid from tb where id = @id and pid is not null
  while @@ROWCOUNT > 0
  begin
  insert into @t_level select @id select @id = pid from tb where id = @id and pid is not null
  end
  return
end
go

有几个问题请教:
1)这个函数创建之后是永久存放在数据库的吗?还是临时的? 如果数据库备份出来迁移到其他地方这个函数还在吗?
2)从哪里可以管理已经创建好的自定义函数?怎样列出所有自定义函数清单?
3)这个函数是sql server 专用的吗?可以在oracle等数据库上使用吗?
4)这个sql函数,和用程序递归来查询,那个效率高?

------解决方案--------------------
SQL code
1)这个函数创建之后是永久存放在数据库的吗?还是临时的? 如果数据库备份出来迁移到其他地方这个函数还在吗?
 A: 永久存在(只要你不删除它)。数据库备份出来迁移到其他地方这个函数还在

2)从哪里可以管理已经创建好的自定义函数?怎样列出所有自定义函数清单?
 A:展开数据库--可编程性--函数.
怎样列出所有自定义函数清单?
A:select * from sys.objects  where type ='FN'

3)这个函数是sql server 专用的吗?可以在oracle等数据库上使用吗?
A:sql server 专用

4)这个sql函数,和用程序递归来查询,那个效率高?
A: 待测试

------解决方案--------------------
问题1:永久,备份还原后 还在
问题2:SQL Server Management Studio 在数据库的可编程里,可以看到函数列表
问题3:这个函数 不支持 oracle,不可以在oracle 上使用
问题4: 递归效率高
------解决方案--------------------
1。你这个是永久的。当然在
2。企业管理器。查询分析器均可。SYSOBJECTS TYPE FN
3。语法不一样的话当然不可以
4。都是递归。用函数有时候不方便