/*在xscj数据库种创建返回table的函数,通过以学号作为实参调用该函数,可显示该学生各门功课的成绩和学分*/
CREATE function score_table(@student_id varchar(20))
       returns @score table
         (
           xs_id varchar(20),
           xs_name char(20),
           kc_name char(20),
           cj tinyint,
           xf tinyint
         )
as
begin  
    insert @score
          select s.学号,s.姓名,p.课程名,p.学分,o.成绩
             from xscj.[dbo].xs as s
             inner join xscj.[dbo].xs_kc as o on (s.学号=o.学号)
             inner join xscj.[dbo].kc as p on (o.课程号=p.课程号)
              where s.学号=@student_id              
return
end
/*多语句表值函数*/
SELECT * FROM XSCJ.[dbo].score_table('001101')  /*多语句表值函数的调用*/
请问上面的return语句怎么没有返回值,应该后面要接个表才对啊,怎么返回的是空呢,但我调试了,最后结果又是对的啊!
到底是怎么回事,请高手解析下这里,最好是上面的语句从头到尾解释下,谢谢了,让我理解之后马上给你加分!

解决方案 »

  1.   

    select s.学号,s.姓名,p.课程名,p.学分,o.成绩
                from xscj.[dbo].xs as s
                inner join xscj.[dbo].xs_kc as o on (s.学号=o.学号)
                inner join xscj.[dbo].kc as p on (o.课程号=p.课程号)
                  where s.学号=@student_id    这个查询没有结果
      

  2.   

    returns @score table 已经说明白了要返回什么,后面的return自然不用写了
      

  3.   

    晕,你不是RETURN一个TABLE了吗,还返回值?
      

  4.   

    那面那个return可以去掉省略不,格式本来就是这样的啊,我是按创建用户函数格式来创建的,注意了,前面那个事returns,多了个s, 后面那个return,