That's a significant stored procedure. Seems like you're doing a lot of processing in there. Is all of it required in one stored procedure?
Here's an example showing how the START TRANSACTION and COMMIT WORK can be used:
Code:
CREATE PROCEDURE TransTest()
AS
BEGIN
START TRANSACTION;
UPDATE Billing B
SET Amount_Owed = Amount_Owed - Amount_Paid
WHERE Student_ID IN
(SELECT DISTINCT E.Student_ID
FROM Enrolls E, Billing B
WHERE E.Student_ID = B.Student_ID);
COMMIT WORK;
end;