从存储过程中获取引发的异常作为输出变量
Get raised exception from stored procedure as output variable
我在存储从存储过程引发的异常时遇到问题。
例如我有两个存储过程 P_Add
和 P_GetAdd
.
P_Add
return 如图所示,除以零时出现异常,
过程 P_GetAdd
执行 P_Add
.
我想 return P_Add
引发的异常到执行 P_GetAdd
的代码。
P_Add
excpets 未提供的参数是错误。
帮助我得到结果。
谢谢。
create procedure P_add
(
@ErrorMessage varchar (100) OUTPUT
)
as
Declare @a int
Declare @b int
declare @c int
set @a = 1
set @b = 0
Begin try
SET @c = @a/@b
end try
begin catch
SET @ErrorMessage = ERROR_MESSAGE();
End catch
create procedure P_getADD
(
@ErrorMessage1 varchar (100) OUTPUT
)
AS
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[P_add]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
BEGIN
EXEC P_add @ErrorMessage = @ErrorMessage1
END
假设我理解了问题,你需要在执行P_add
存储过程时将@ErrorMessage1
标记为output
:
CREATE PROCEDURE P_getADD
(
@ErrorMessage1 varchar (100) OUTPUT
)
AS
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[P_add]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
BEGIN
EXEC P_add @ErrorMessage1 OUTPUT
END
我在存储从存储过程引发的异常时遇到问题。
例如我有两个存储过程 P_Add
和 P_GetAdd
.
P_Add
return 如图所示,除以零时出现异常,
过程 P_GetAdd
执行 P_Add
.
我想 return P_Add
引发的异常到执行 P_GetAdd
的代码。
P_Add
excpets 未提供的参数是错误。
帮助我得到结果。
谢谢。
create procedure P_add
(
@ErrorMessage varchar (100) OUTPUT
)
as
Declare @a int
Declare @b int
declare @c int
set @a = 1
set @b = 0
Begin try
SET @c = @a/@b
end try
begin catch
SET @ErrorMessage = ERROR_MESSAGE();
End catch
create procedure P_getADD
(
@ErrorMessage1 varchar (100) OUTPUT
)
AS
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[P_add]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
BEGIN
EXEC P_add @ErrorMessage = @ErrorMessage1
END
假设我理解了问题,你需要在执行P_add
存储过程时将@ErrorMessage1
标记为output
:
CREATE PROCEDURE P_getADD
(
@ErrorMessage1 varchar (100) OUTPUT
)
AS
IF EXISTS (
SELECT *
FROM sysobjects
WHERE id = object_id(N'[dbo].[P_add]')
AND OBJECTPROPERTY(id, N'IsProcedure') = 1
)
BEGIN
EXEC P_add @ErrorMessage1 OUTPUT
END