create function 先修课(@s int)
returns table
as
begin
return (select 学生表.学号,姓名,先修课 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 学号=@s )
end
报错:
服务器: 消息 170,级别 15,状态 31,过程 先修课,行 7
第 7 行: 'BEGIN' 附近有语法错误。请问是什么原因,如果把begin和end去掉,它也报错:
服务器: 消息 209,级别 16,状态 1,过程 先修课,行 5
列名 '学号' 不明确。问题:1、为什么加begin end就报错?
2、学号为什么不能是变量?谢谢大家了,请帮我解答……
returns table
as
begin
return (select 学生表.学号,姓名,先修课 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 学号=@s )
end
报错:
服务器: 消息 170,级别 15,状态 31,过程 先修课,行 7
第 7 行: 'BEGIN' 附近有语法错误。请问是什么原因,如果把begin和end去掉,它也报错:
服务器: 消息 209,级别 16,状态 1,过程 先修课,行 5
列名 '学号' 不明确。问题:1、为什么加begin end就报错?
2、学号为什么不能是变量?谢谢大家了,请帮我解答……
returns table
as
begin
declare @i nvarchar(2000)
set @i=(select 学生表.学号,姓名,先修课 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 学号=@s )
return @i
end
returns table
as
return select 学生表.学号,姓名,先修课 from 学生表,成绩表,课程表
where 学生表.学号=成绩表.学号 and 成绩表.课程号=课程表.课程号 and 学号=@s
如:
CREATE FUNCTION fn_name
RETURNS TABLE
AS
RETURN(
sql_query;
)当创建多语句的表值函数时,需要加BEGIN..END.
如:
CREATE FUNCTION fn_name
RETURN @t TABLE(col1 col1_type,col2 col2_type)
AS
BEGIN
INSERT INTO @t
SELECT col1,col2
FROM tb_name RETURN
END创建标量函数就不用说了..