[英]Regarding query in stored procedure
我必须创建一个存储过程,该存储过程的输入将是“课程ID”和“学生ID”。 该存储过程将检查学生是否已注册该课程。 如果已经注册了该学生,则显示一条消息“该学生已被注册”。
下面是我尝试过的。 没有得到预期的结果。 我有的表:
这就是我尝试过的
CREATE PROCEDURE Clk (@CourseId AS INTEGER, @StudentId AS VARCHAR) AS
DECLARE @stud INTEGER
SELECT @stud = (select Count(enrollmentId) from CourseEnrollment
where StudentId = @StudentId and CourseId = @CourseId )
if @stud > 0
BEGIN
print 'The student is already enrolled'
END
else
BEGIN
print 'nope'
END
编辑:
我现在开始工作了。 创建存储过程时,我给了错误的数据类型。
在过滤记录时,您没有考虑CourseId。 您的查询:
SELECT @stud = (select Count(enrollmentId)
from CourseEnrollment
where StudentId = @StudentId )
如果您已经通过了说给学生xyz的课程1,并且xyz已经注册了课程2,则您的查询将给出结果为1,即使他没有被课程1录取,您也会说他也已经注册了课程。
尝试类似:
IF EXISTS (SELECT CourseId
FROM courseEnrollment
WHERE StudentId = @StudentId
AND CourseId = @CourseId) THEN
print 'The student is already enrolled'
ELSE
print 'The student has not enrolled'
END IF;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.