1、第一个简单实例
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[stu_countSex]
@output varchar(100) output
AS
begin
begin try
select * from student
end try
begin catch
print '出现了异常'
end catch
end
2、第二个复杂实例
CREATE PROCEDURE Proc_InsertTemp
(@number varchar(3000),
@name varchar(2100),
@output varchar(100) output )
AS
BEGIN
SET NOCOUNT ON;
DECLARE @outputerr varchar(3000)
BEGIN TRY
insert into dbo.Table_1 values(@number,@name)
END TRY
BEGIN CATCH
--在这里添加错误处理语句
END CATCH
if (@@error<>0 or @@rowcount = 0)
begin
select @output = '-1'
rollback transaction operTran1
return
end
else
begin
COMMIT TRANSACTION operTran1
end
END
注意:下面多了一个if @@error<>0 or @@rowcount=0。
总结:
@@error 是一个内置的全局变量,为0表示最近的一次操作没有错误.
@@rowcount是指存储过程返回受影响的行数;
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROC [dbo].[stu_countSex]
@output varchar(100) output
AS
begin
begin try
select * from student
end try
begin catch
print '出现了异常'
end catch
end
2、第二个复杂实例
CREATE PROCEDURE Proc_InsertTemp
(@number varchar(3000),
@name varchar(2100),
@output varchar(100) output )
AS
BEGIN
SET NOCOUNT ON;
DECLARE @outputerr varchar(3000)
BEGIN TRY
insert into dbo.Table_1 values(@number,@name)
END TRY
BEGIN CATCH
--在这里添加错误处理语句
END CATCH
if (@@error<>0 or @@rowcount = 0)
begin
select @output = '-1'
rollback transaction operTran1
return
end
else
begin
COMMIT TRANSACTION operTran1
end
END
注意:下面多了一个if @@error<>0 or @@rowcount=0。
总结:
@@error 是一个内置的全局变量,为0表示最近的一次操作没有错误.
@@rowcount是指存储过程返回受影响的行数;