繁体   English   中英

关于存储过程中的查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM