关于存储过程中的查询

Regarding query in stored procedure

我必须创建一个存储过程,存储过程的输入将是课程 ID 和学生 ID。 存储过程将检查学生是否已注册 class。 如果该学生已经注册,则显示一条消息“该学生已注册”。

下面是我试过的。没有得到预期的结果。 我拥有的表格:

这是我试过的

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;