Task 1
Task 1
Students Table
StudentID
FullName
Course
Subjects Table
SubjectCode
Description
Grades Table
GradeID
StudentID
SubjectCode
Grade
Remarks
Attendance Table
StudentID
SubjectCode
DateAttended
Task 2:
Sp_InsertGrade
Task 3:
Create a trigger
Tr_AttendaceLimit
Criteria:
All four tables (Student,Subjects,Grades and Attendance) are created correctly with appropriate data
types and constraints.
A working stored procedure sp_InsertGrade exists, accepts parameters, inserts data, and computes
correct remarks.
A working trigger Tr_AttendanceLimit prevents more than 10 attendance records per student per
subject. Shows an appropriate error message.
Inserts at least 2 students, 2 subjects, and corresponding test data for grades and attendance.
Includes a test case showing that the trigger blocks the 11th attendance record.
Stored procedure assigns “PASSED” for grades > or = 75 and “FAILED” for grades < 75 accurately.
SQL is properly formatted, uses meaningful identifiers, and includes helpful comments.
OPEN attendance_cursor;
FETCH NEXT FROM attendance_cursor INTO @StudentID, @SubjectCode, @DateAttended;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Check if student already has 10 attendance records for this subject
DECLARE @AttendanceCount INT;
SELECT @AttendanceCount = COUNT(*)
FROM Attendance
WHERE StudentID = @StudentID AND SubjectCode = @SubjectCode;
IF @AttendanceCount >= 10
BEGIN
RAISERROR('Student %d has already attended the maximum 10 sessions for subject %s', 16, 1,
@StudentID, @SubjectCode);
END
ELSE
BEGIN
-- Insert the record if under limit
INSERT INTO Attendance (StudentID, SubjectCode, DateAttended)
VALUES (@StudentID, @SubjectCode, @DateAttended);
END
CLOSE attendance_cursor;
DEALLOCATE attendance_cursor;
END;
-- Insert test data
INSERT INTO Students (StudentID, FullName, Course) VALUES
(1, 'Sarah Barsubia', 'DBMS'),
(2, 'Heart Necesito', 'HCI');