在一个存储过程中执行另一个存储过程能得到执行后的错误号吗?
例:
create proc p1
....gocreate proc p2exec p1
if @@error --这样写能得到P1执行过程出错的信息吗?或则得在p1中建个output变量然后在p2中得到?
return
go
例:
create proc p1
....gocreate proc p2exec p1
if @@error --这样写能得到P1执行过程出错的信息吗?或则得在p1中建个output变量然后在p2中得到?
return
go
create proc p1 @error int output as
...
if @@error set @erroe=@@error
go
---------
create proc p2 as
declare @error int
set @error=0
exec p1 @error output..
go这样就OK吧?还有更简单的方法吗?
CREATE PROCEDURE Test1(@er int output )
AS
BEGIN
DECLARE @num varchar
SET @num = 123.33
SELECT @er=@@ERROR
END
GOCREATE PROCEDURE test
AS
BEGIN
EXEC Test1
IF @@ERROR > 0
PRINT @@ERROR
ENDEXEC test/*
Msg 8115, Level 16, State 5, Procedure Test1, Line 5
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。
0
*/
--结果为零,表明不能得到的
--如果你要得到:CREATE PROCEDURE Test2
AS
BEGIN
DECLARE @er BIGINT
EXEC Test1 @er OUTPUT
IF @er > 0
PRINT @er
END
GO
EXEC Test2
/*
Msg 8115, Level 16, State 5, Procedure Test1, Line 5
将 numeric 转换为数据类型 varchar 时出现算术溢出错误。
8115
*/