【发布时间】:2021-09-02 22:13:24
【问题描述】:
ALTER PROCEDURE Add_Edit_Courses_new
@CourseCode VARCHAR,
... other params ...
AS
BEGIN TRY
DECLARE @ErrorCode INT =0, @ErrorMessage VARCHAR(25) = 'Action failed'
IF @TaskType > 2
BEGIN
RAISERROR('Wrong action key',16,1)
END
ELSE
BEGIN TRANSACTION
BEGIN
DECLARE @message VARCHAR(MAX)
IF @TaskType = 1
BEGIN
INSERT INTO Courses(...) VALUES(@CourseCode,...)
SET @message = 'Added Successfully'
END
ELSE IF @TaskType = 2
BEGIN
UPDATE Courses SET CourseCode=@CourseCode,...;
SET @message = 'Modified Successfully'
END
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
SELECT ERROR_NUMBER() AS ErrorNumber, ...
END CATCH
我编写了这个存储过程来插入和更新,我在使用 try 和 catch 时使用 (1 & 2) 来区分任务,但是每次我尝试执行这个存储过程时,我都会遇到这个错误,请问你能帮助我解决我的错误,我只是第一次学习这个原则。
【问题讨论】:
-
另请参阅:
VARCHAR,没有长度,请参阅Bad Habits to Kick : Declaring VARCHAR without (length)。 -
不要打扰
TRY/CATCH,只需在程序顶部使用SET XACT_ABORT ON;,请参阅stackoverflow.com/questions/68937413/…
标签: sql-server tsql error-handling