主要问题是存储过程主体缺少begin 和 end 语句,使得后面的测试语句也被编译成了存储过程的主体,从而造成了递归(存储过程调用自己)。
alter procedure 学生信息
@snum varchar(4),
@AvgScore int OUTPUT,
@CourseNum int OUTPUT,
@NotpassNum int OUTPUT
AS
BEGIN
Select @AvgScore = Avg(Score) From SC Where SC.snum = @snum
Select @CourseNum = Count(*) From SC Where SC.snum = @snum
Select @NotpassNum = Count(*) From SC Where SC.snum = @snum and score<60
END
另外,分号是SQL语句的结束符,不明白为什么有存储过程名后面会紧跟着一个分号。
学生信息 和 3之间为什么有个分号?