国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

存儲過程知識總結【二】

2024-07-21 02:51:07
字體:
來源:轉載
供稿:網友
存儲過程知識總結【二】

/*==========================================================*描述:存儲過程知識點總結,以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.事物處理的存儲過程===================

createprocedure 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******************************************==============================================================*/


上一篇:Transact-SQL三值邏輯

下一篇:SQL筆記

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 磐安县| 顺平县| 庆阳市| 嘉黎县| 石棉县| 大庆市| 宁晋县| 广南县| 鱼台县| 铁岭县| 临颍县| 冕宁县| 津南区| 垣曲县| 金华市| 建平县| 五寨县| 遵义市| 海伦市| 绵阳市| 逊克县| 齐齐哈尔市| 阜宁县| 中山市| 奉化市| 拜城县| 邹平县| 太白县| 南宫市| 曲周县| 吴川市| 太康县| 衡阳县| 隆化县| 海伦市| 丰宁| 龙山县| 扬州市| 鄂州市| 宾川县| 长汀县|