注意:在下列代码中的:begin catch ...... end catch代码块,虽然其中没有编写任何语句,但是“begin catch ...... end catch”代码块不可省略,否则编译器报错!
存储过程代码如下:
USE [B2C2] -- 使用B2C2数据库
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[proc_test02]
(
-- 设置全局变量
@D_SEX char(8), -- 性别
@D_NAME varchar(128), -- 姓名
@D_AGE int, -- 年龄
@D_STUNO int, -- 学号
@D_COUNT int OUTPUT -- 数量,输出参数
)
AS
BEGIN TRY
-- 设置局部变量
DECLARE @D_TEACHER varchar(128); -- 教师姓名
DECLARE @D_SUBJECT varchar(64); -- 科目
SELECT TOP 1 @D_TEACHER = TEACHER, @D_SUBJECT = SUBJECTS FROM dbo.t_class WHERE STUNO = @D_STUNO;
BEGIN TRAN -- 开启事务
END TRY
BEGIN CATCH
END CATCH -- "BEGIN TRY--END TRY"与"BEGIN CATCH--END CATCH"要配对使用
IF(@@TRANCOUNT > 0) -- 判断事务是否执行过
BEGIN
SET @D_COUNT = 1;
COMMIT TRAN; -- 关闭事务
END
GO