【发布时间】:2016-01-08 19:23:57
【问题描述】:
我想在变量中返回 ERROR_MESSAGE(),但这不起作用,因为就像引发错误但我不希望那样。我想接收返回值(0 ok, 1 error),加上变量@Id中插入的id和这个变量@ErrorMsg中的错误消息,如果有错误
代码如下:
CREATE PROCEDURE [cimpl].[TestInsert]
(
@TestId INT,
@Name NVARCHAR(50),
@Id INT OUTPUT,
@ErrorMsg NVARCHAR(4000) = NULL OUTPUT
)
AS
BEGIN
DECLARE @ReturnVal int
SET NOCOUNT ON;
SET @ReturnVal = 0;
SET @ErrorMsg = '';
BEGIN TRY
-- Insert statement
INSERT [dbo].[Test]
(
[TestId],
[Name]
)
VALUES (
@TestId,
@Name,
)
SET @Id = SCOPE_IDENTITY();
END TRY
BEGIN CATCH
SET @ReturnVal = 1;
SET @ErrorMsg = ERROR_MESSAGE();
END CATCH
RETURN @ReturnVal;
END
来电:
DECLARE @IdIns INT
DECLARE @ErrorM NVARCHAR(4000)
DECLARE @ReturnValue INT = 0
EXEC @ReturnValue =
[cimpl].[TransactInsert]
@TestId= 'ee', --I'm forcing the error
@Name = 'A',
@Id = @IdIns OUTPUT,
@ErrorMsg = @ErrorM OUTPUT
SELECT @ErrorM
SELECT @ReturnValue
SELECT @IdIns
【问题讨论】:
-
你看过下面的帖子吗:stackoverflow.com/questions/13647437/…
-
我不喜欢这种方法,还有其他方法吗?我不想引发错误,我只想得到错误消息作为输出
标签: sql-server