下面是我的存储过程的代码,但我并不完全清楚执行的流程。我的例子中的@@ RAISERROR()如何工作以及它如何改变正常流程?这个函数中的数字又是什么意思?有几个其他数字也可以用来代替10 & 1,所以这些数字如何影响执行流程。请让我知道,如果我的风格的编码结构是坏/错或者是否有任何改进的余地。 以下是我的代码。以下过程的执行流程是什么?
CREATE PROCEDURE spAddressMaster
@Mode varchar(20),
@Street varchar(MAX),
@City varchar(300),
@State varchar(300),
@Country varchar(300),
@PostalCode int,
@Remarks varchar(MAX),
@Type varchar(300)
AS
BEGIN
BEGIN TRANSACTION
BEGIN TRY
--INSERT MODE--
IF(@Mode='INSERT')
BEGIN
INSERT INTO [AddressMST] (
[Street],
[City],
[State],
[Country],
[PostalCode],
[Remarks],
[Type]
)
VALUES (
@Street,
@City,
@State,
@Country,
@PostalCode,
@Remarks,
@Type
)
IF(@@ERROR<>0)
RAISERROR('Insert Operation Fail',10,1)
END
END TRY
BEGIN CATCH
IF(@@ERROR<>0)
BEGIN
ROLLBACK TRANSACTION
SELECT ERROR_MESSAGE()
END
END CATCH
END
GO
你可以很容易地用几个PRINT语句测试自己... –
@Mitch小麦我需要更好地解释@@ RAISEERROR()函数,我认为我可以用PRINT获得... –