簡體   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