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

SQL 自定义函数问题。
create function GetStudentsInformation(@StuID varchar(5))
returns @StudentInformation table
(
StudentID varchar(5) primary key not null,
StudentName varchar(50) null,
Birthday datetime
)
as
begin
declare @StuName varchar(50),@StuBirthday datetime

select @stuid=studentID,@StuName=StudentName,@StuBirthday=Birthday from StudentTable where @StuID=StudentID
if @StuID is not null
begin
insert @StudentInformation select @StuID,@StuName,@StuBirthday
end
return;
end;

上面是从书上找的一个自定义函数代码,以下代码不明白望大家解释一下。
1. select @stuid=studentID,@StuName=StudentName,@StuBirthday=Birthday from StudentTable where @StuID=StudentID
  where 后面为什么是@StuID=StudentID? 不应该是StudentID=@StuID吗,字段和值在=两边是不区分位置的吗?

2. if @StuID is not null
begin
insert @StudentInformation select @StuID,@StuName,@StuBirthday -- 向返回table赋值,这样赋?不是很理解。
end

3. return; return不需要指定具体的返回变量,不用和之前的保持一致吗? 如果是返回数值型或字符型也可以这样写?
returns @StudentInformation table
(
StudentID varchar(5) primary key not null,
StudentName varchar(50) null,
Birthday datetime
)

------解决方案--------------------
1、 a=b 和 b=a是一样的就是个条件判断。

2、@StudentInformation 是个表变量,你可以当它是个表。

3、返回表的时候这样写。