执行存储过程只打印最后一条记录
Executing stored procedure prints only the last record
CREATE PROCEDURE DISPLAY3
@semester int,
@StdName varchar(15) OUTPUT,
@LMarks int OUTPUT,
@HMarks int OUTPUT
AS
BEGIN
SELECT DISTINCT
@StdName = StdName,
@HMarks = MAX(sm.MarksObtained),
@LMarks = MIN(sm.MarksObtained)
FROM
std s
INNER JOIN
stdcourseteacher sct ON sct.StdID = s.StdID
INNER JOIN
Exam e ON e.SemID = @semester AND e.Topic = 'Final-Term'
INNER JOIN
StdMarks sm ON sm.StdID = sct.StdID AND e.ExamID = sm.ExamID
GROUP BY
s.StdName, sm.ExamID
END
执行:
DECLARE @StdName varchar(15)
DECLARE @LMarks int
DECLARE @HMarks int
EXEC DISPLAY3 6, @StdName OUTPUT, @LMarks OUTPUT, @HMarks OUTPUT
PRINT 'Student Name: ' + CONVERT(varchar(15), @StdName) + CHAR(13)
PRINT 'Lowest Marks in Final Term of this Semester: ' + CONVERT(varchar(10), @LMarks)
PRINT 'Highest Marks in Final Term of this Semester: ' + CONVERT(varchar(10), @LMarks)
输出:
Student Name: Waqar
Lowest Marks in Final Term of this Semester: 50
Highest Marks in Final Term of this Semester: 50
Waqar为最后一条记录,以上记录暂不打印。我知道它必须与追加有关,但我在追加时感到困惑,因为我的代码也有输入。
通常您只 return 一个结果集,调用程序会显示数据。所以
create or alter procedure DISPLAY3 @semester int
as
begin
select StdName, HMarks = Max(sm.MarksObtained), LMarks = Min(sm.MarksObtained)
from std s
inner join stdcourseteacher sct on sct.StdID = s.StdID
inner join Exam e on e.SemID = @semester and e.Topic = 'Final-Term'
inner join StdMarks sm on sm.StdID = sct.StdID and e.ExamID = sm.ExamID
group by s.StdName
end
CREATE PROCEDURE DISPLAY3
@semester int,
@StdName varchar(15) OUTPUT,
@LMarks int OUTPUT,
@HMarks int OUTPUT
AS
BEGIN
SELECT DISTINCT
@StdName = StdName,
@HMarks = MAX(sm.MarksObtained),
@LMarks = MIN(sm.MarksObtained)
FROM
std s
INNER JOIN
stdcourseteacher sct ON sct.StdID = s.StdID
INNER JOIN
Exam e ON e.SemID = @semester AND e.Topic = 'Final-Term'
INNER JOIN
StdMarks sm ON sm.StdID = sct.StdID AND e.ExamID = sm.ExamID
GROUP BY
s.StdName, sm.ExamID
END
执行:
DECLARE @StdName varchar(15)
DECLARE @LMarks int
DECLARE @HMarks int
EXEC DISPLAY3 6, @StdName OUTPUT, @LMarks OUTPUT, @HMarks OUTPUT
PRINT 'Student Name: ' + CONVERT(varchar(15), @StdName) + CHAR(13)
PRINT 'Lowest Marks in Final Term of this Semester: ' + CONVERT(varchar(10), @LMarks)
PRINT 'Highest Marks in Final Term of this Semester: ' + CONVERT(varchar(10), @LMarks)
输出:
Student Name: Waqar
Lowest Marks in Final Term of this Semester: 50
Highest Marks in Final Term of this Semester: 50
Waqar为最后一条记录,以上记录暂不打印。我知道它必须与追加有关,但我在追加时感到困惑,因为我的代码也有输入。
通常您只 return 一个结果集,调用程序会显示数据。所以
create or alter procedure DISPLAY3 @semester int
as
begin
select StdName, HMarks = Max(sm.MarksObtained), LMarks = Min(sm.MarksObtained)
from std s
inner join stdcourseteacher sct on sct.StdID = s.StdID
inner join Exam e on e.SemID = @semester and e.Topic = 'Final-Term'
inner join StdMarks sm on sm.StdID = sct.StdID and e.ExamID = sm.ExamID
group by s.StdName
end