Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4249364
  • 博文数量: 601
  • 博客积分: 15410
  • 博客等级: 上将
  • 技术积分: 6884
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 08:11
个人简介

独学而无友,则孤陋而寡闻!

文章分类

全部博文(601)

文章存档

2020年(1)

2018年(4)

2017年(7)

2016年(42)

2015年(25)

2014年(15)

2013年(36)

2012年(46)

2011年(117)

2010年(148)

2009年(82)

2008年(37)

2007年(41)

分类: SQLServer

2017-01-05 21:10:15

写了一个函数,耗了大半天,由衷感叹微软的东东!!!


  1. ALTER function [dbo].[test] ( @aid varchar( 80 ))
  2. returns VARCHAR(200)
  3. as
  4. begin
  5.   declare
  6.     @top_ag VARCHAR(80),
  7.     @aname VARCHAR(80),
  8.         @t_root VARCHAR(80),
  9.     @root VARCHAR(200);
  10.     set @root = '';
  11.     set @top_ag = 't01';

  12.     select @t_root=parent_name from agent_info where login_name = @aid AND parent_name !=@top_ag;
  13.     while @@rowcount <> 0
  14.     BEGIN
  15.             --set @root = @root + '\' + @t_root;
  16.          set @root= '/' + @t_root + @root;
  17.          set @aname = @t_root;
  18.          select @t_root=parent_name from agent_info where login_name = @aname AND parent_name !=@top_ag;
  19.     END
  20.        set @root = @root + '/' + @aid;
  21.     --set @root=@aid;
  22.     return @root;
  23. end
1、如果@root不初始化,则后面所有的+都是空,都为null,并且没有任何提示;
2、调用时,这种“标值函数”,必须当sum等使用,不能用在from 后面,表函数必须用在from后面;
3、调用时,如果不加dbo.test(),则会报错,必须 加dbo,并且 dbo上面还不能写[]号。
4、函数中如果有insert,那么就死定了。


阅读(1102) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~