写了一个函数,耗了大半天,由衷感叹微软的东东!!!
-
ALTER function [dbo].[test] ( @aid varchar( 80 ))
-
returns VARCHAR(200)
-
as
-
begin
-
declare
-
@top_ag VARCHAR(80),
-
@aname VARCHAR(80),
-
@t_root VARCHAR(80),
-
@root VARCHAR(200);
-
set @root = '';
-
set @top_ag = 't01';
-
-
select @t_root=parent_name from agent_info where login_name = @aid AND parent_name !=@top_ag;
-
while @@rowcount <> 0
-
BEGIN
-
--set @root = @root + '\' + @t_root;
-
set @root= '/' + @t_root + @root;
-
set @aname = @t_root;
-
select @t_root=parent_name from agent_info where login_name = @aname AND parent_name !=@top_ag;
-
END
-
set @root = @root + '/' + @aid;
-
--set @root=@aid;
-
return @root;
-
end
1、如果@root不初始化,则后面所有的+都是空,都为null,并且没有任何提示;
2、调用时,这种“标值函数”,必须当sum等使用,不能用在from 后面,表函数必须用在from后面;
3、调用时,如果不加dbo.test(),则会报错,必须 加dbo,并且 dbo上面还不能写[]号。
4、函数中如果有insert,那么就死定了。
阅读(1102) | 评论(0) | 转发(0) |