项目数据表:名称        负责人     
-------------------
CCH_LY          5       
SiS             3      
PETER           6    
REALIDEA        1    
PPA             2     
NBA             4    
员工数据表:编号   姓名       
---- ---------- 
1    陈有朋    
4    刘燕      
2    孙晓群    
3    李晓峰   
5    张六     
6    慕容雪   题目:  定义"用户自定义函数",查询"项目数据表"的"PPA"项目的负责人"姓名"注:项目数据表的"负责人"是员工数据表的"编号"的外键如:  SiS项目的负责人姓名是  李晓峰
如下是我做的,可惜有错!create function dbo.gg
(@a char)
returns char
beginreturn (select a.姓名 from 员工数据表 a inner join 项目数据表 b where a.编号=b.负责人 and b.名称=@a)endgo
select dbo.gg('PPA')

解决方案 »

  1.   

    create function dbo.gg
    (@a varchar(100))
    returns varchar(100)
    beginreturn (select a.姓名 from 员工数据表 a inner join 项目数据表 b where a.编号=b.负责人 and b.名称=@a)endgo
    select dbo.gg('PPA')
      

  2.   

    try--
    create function dbo.gg
    (@a varchar(20))
    returns varchar(50)
    beginreturn (select a.姓名 from 员工数据表 a inner join 项目数据表 b where a.编号=b.负责人 and b.名称=@a)endgo
    select dbo.gg('PPA')
      

  3.   

    看你的定义好像没有错(我卸了SQL了,呵呵),你的2个表中的“编号”和“负责人”的数据类型会不会有问题,是不是一个是
    Char型的?如果有空格之类也找不到数据的。你在查询分析器中直接运行:
    select a.姓名 from 员工数据表 a inner join 项目数据表 b where a.编号=b.负责人 and b.名称=‘PPA’ 能返回数据吗?
      

  4.   

    create function dbo.gg(@a varchar(1000))
    returns varchar(1000)
    as
    begin
    select @a=a.姓名 from 员工数据表 a inner join 项目数据表 b on a.编号=b.负责人 where  b.名称=@a
    return @a
    endgo
    select dbo.gg('PPA')
      

  5.   

    好像是错在这里
    (@a char)
    returns char
    应该是这样的
    (@a char(20))
    returns char(20)
    可是不知道为什么加多了一个(20)就可以了
    不明白啊!!!
    还有应该是
    select a.姓名 from 员工数据表 a inner join 项目数据表 b where a.编号=b.负责人 and b.名称=@a
      

  6.   

    还有应该是 select a.姓名 from 员工数据表 a inner join 项目数据表 b on a.编号=b.负责人 and b.名称=@a