存储过程知识总结【二】有哪些要点补充?
- 内容介绍
- 文章标签
- 相关推荐
本文共计837个文字,预计阅读时间需要4分钟。
存储过程知识概述
存储过程是数据库中的一种编程对象,用于封装一系列SQL语句,以便于执行重复的任务。它能够提高数据库性能,简化代码管理,并增强安全性。
描述:
存储过程知识主要包括以下方面:
- 存储过程的基本概念和用途- 创建和执行存储过程- 参数传递和返回值- 常用控制流语句(如IF-ELSE、循环等)- 错误处理
示例:
以Northwind数据库的Employees表为例,以下是一个简单的存储过程示例,用于获取所有员工的姓名和职位:
sqlCREATE PROCEDURE GetEmployeeDetailsASBEGIN SELECT FirstName, LastName, Title FROM Employees;END;
执行此存储过程:
sqlEXEC GetEmployeeDetails;
存储过程知识/*==========================================================*描述:存储过程知识点总结,以Northwind数据库的Employees表为例
===========================================================*/
--=========================1.out输出/输出的存储过程==================
create procedure usp_OutParameterSelect @employeeID int, @name nvarchar(10) out,--**即作为输入,又作为输出** @lastName nvarchar(20) out --**out与output在这里通用**asbegin select @name=FirstName--**重新赋值,作为输出** ,@lastName=LastName from dbo.Employees where EmployeeID = @employeeID and City = @name--**输入参数查询**end
GO
--===========================执行测试=======================
declare @employeeID int,@name nvarchar(10),@lastName nvarchar(20)set @employeeID = 6set @name = ‘London‘
execute usp_OutParameterSelect @employeeID,@name output,@lastName output
select @name as FirstName,@lastName as LastName
GO
--=========================2.异常处理的存储过程=================
create procedure usp_ExceptionHandling
as
begin begin try select 1/0--**除数为零** end try
begin catch if @@ERROR 0 declare @ErrorMessage nvarchar(4000) ,@ErrorSeverity int ,@ErrorState int select @ErrorMessage = ERROR_MESSAGE()--**错误的信息** ,@ErrorSeverity = ERROR_SEVERITY()--***错误的严重级别* ,@ErrorState = ERROR_STATE()--**错误的状态** /*抛出一个异常*/ raiserror (@ErrorMessage,@ErrorSeverity,@ErrorState) end catchend
GO
--===========================执行测试==========================
execute usp_ExceptionHandling
--执行结果如下:/*Msg 50000, Level 16, State 1, Procedure usp_ExceptionHandling, Line 17Divide by zero error encountered.*/GO--=========================3.事物处理的存储过程===================
alter procedure usp_Transaction
asbegin begin try SET XACT_ABORT ON /* *当SET XACT_ABORT为ON 时,如果Transact-SQL语句产生运行时错误,事务终止并回滚. *为OFF 时,只回滚产生错误的语句.而事务继续处理. */ begin transaction --**这条跟新语句执行时会出现异常,FirstName被定义为Not Null** update dbo.Employees set FirstName = NULL where EmployeeID = 1 update dbo.Employees set FirstName = FirstName + ‘XXX‘ where City = ‘London‘ commit transaction end try begin catch if @@TRANCOUNT > 0 rollback transaction--**事物回滚** declare @ErrorMessage nvarchar(4000) ,@ErrorSeverity int ,@ErrorState int select @ErrorMessage = ERROR_MESSAGE()--**错误的信息** ,@ErrorSeverity = ERROR_SEVERITY()--***错误的严重级别* ,@ErrorState = ERROR_STATE()--**错误的状态** /*抛出一个异常*/ raiserror (@ErrorMessage,@ErrorSeverity,@ErrorState)end catch
end
--===========================执行测试==============================
execute usp_Transaction
/*==============================================================*********************************End******************************************==============================================================*/
本文共计837个文字,预计阅读时间需要4分钟。
存储过程知识概述
存储过程是数据库中的一种编程对象,用于封装一系列SQL语句,以便于执行重复的任务。它能够提高数据库性能,简化代码管理,并增强安全性。
描述:
存储过程知识主要包括以下方面:
- 存储过程的基本概念和用途- 创建和执行存储过程- 参数传递和返回值- 常用控制流语句(如IF-ELSE、循环等)- 错误处理
示例:
以Northwind数据库的Employees表为例,以下是一个简单的存储过程示例,用于获取所有员工的姓名和职位:
sqlCREATE PROCEDURE GetEmployeeDetailsASBEGIN SELECT FirstName, LastName, Title FROM Employees;END;
执行此存储过程:
sqlEXEC GetEmployeeDetails;
存储过程知识/*==========================================================*描述:存储过程知识点总结,以Northwind数据库的Employees表为例
===========================================================*/
--=========================1.out输出/输出的存储过程==================
create procedure usp_OutParameterSelect @employeeID int, @name nvarchar(10) out,--**即作为输入,又作为输出** @lastName nvarchar(20) out --**out与output在这里通用**asbegin select @name=FirstName--**重新赋值,作为输出** ,@lastName=LastName from dbo.Employees where EmployeeID = @employeeID and City = @name--**输入参数查询**end
GO
--===========================执行测试=======================
declare @employeeID int,@name nvarchar(10),@lastName nvarchar(20)set @employeeID = 6set @name = ‘London‘
execute usp_OutParameterSelect @employeeID,@name output,@lastName output
select @name as FirstName,@lastName as LastName
GO
--=========================2.异常处理的存储过程=================
create procedure usp_ExceptionHandling
as
begin begin try select 1/0--**除数为零** end try
begin catch if @@ERROR 0 declare @ErrorMessage nvarchar(4000) ,@ErrorSeverity int ,@ErrorState int select @ErrorMessage = ERROR_MESSAGE()--**错误的信息** ,@ErrorSeverity = ERROR_SEVERITY()--***错误的严重级别* ,@ErrorState = ERROR_STATE()--**错误的状态** /*抛出一个异常*/ raiserror (@ErrorMessage,@ErrorSeverity,@ErrorState) end catchend
GO
--===========================执行测试==========================
execute usp_ExceptionHandling
--执行结果如下:/*Msg 50000, Level 16, State 1, Procedure usp_ExceptionHandling, Line 17Divide by zero error encountered.*/GO--=========================3.事物处理的存储过程===================
alter procedure usp_Transaction
asbegin begin try SET XACT_ABORT ON /* *当SET XACT_ABORT为ON 时,如果Transact-SQL语句产生运行时错误,事务终止并回滚. *为OFF 时,只回滚产生错误的语句.而事务继续处理. */ begin transaction --**这条跟新语句执行时会出现异常,FirstName被定义为Not Null** update dbo.Employees set FirstName = NULL where EmployeeID = 1 update dbo.Employees set FirstName = FirstName + ‘XXX‘ where City = ‘London‘ commit transaction end try begin catch if @@TRANCOUNT > 0 rollback transaction--**事物回滚** declare @ErrorMessage nvarchar(4000) ,@ErrorSeverity int ,@ErrorState int select @ErrorMessage = ERROR_MESSAGE()--**错误的信息** ,@ErrorSeverity = ERROR_SEVERITY()--***错误的严重级别* ,@ErrorState = ERROR_STATE()--**错误的状态** /*抛出一个异常*/ raiserror (@ErrorMessage,@ErrorSeverity,@ErrorState)end catch
end
--===========================执行测试==============================
execute usp_Transaction
/*==============================================================*********************************End******************************************==============================================================*/

