小编use*_*343的帖子

ROLLBACK TRANSACTION请求没有相应的BEGIN TRANSACTION

我已经尝试将COMMIT TRAN置于if else循环中,我仍然遇到此错误.

我必须让一个学生上课.如果登记后的座位数量为负数,我必须将其撤消并打印一条消息,说明无法注册.我已经放了其他错误消息,看看交易是如何运作的.

CREATE PROCEDURE dbo.EnrollStudent ( @CourseID  AS INTEGER,
                                     @StudentID AS VARCHAR(20) ) AS
BEGIN
   DECLARE @StatusID INTEGER
   DECLARE @Status VARCHAR(50)
   DECLARE @CurrentSeats INTEGER
   DECLARE @ErrorCode INTEGER
   SET @StatusID=0



      IF EXISTS (SELECT 1 
                    FROM dbo.CourseEnrollment 
                    WHERE dbo.CourseEnrollment.CourseId=@CourseID AND dbo.CourseEnrollment.StudentId=@StudentID )
        BEGIN

         BEGIN TRAN Tr1
         SET @StatusID = 1
         SELECT @ErrorCode=@@ERROR
         IF (@ErrorCode<>0) GOTO OTHERPROBLEM
         ELSE 
         COMMIT TRAN Tr1

        END


     IF EXISTS ( SELECT 1
                    FROM dbo.CourseEnrollment
                    FULL OUTER JOIN dbo.Courses
                    ON dbo.Courses.CourseId=@CourseID     
                    WHERE dbo.CourseEnrollment.StudentId<>@StudentID  AND dbo.Courses.Faculty IS NULL …
Run Code Online (Sandbox Code Playgroud)

sql transactions sql-server-2008

13
推荐指数
2
解决办法
4万
查看次数

标签 统计

sql ×1

sql-server-2008 ×1

transactions ×1