SQL存储过程实例练习(答案)
2012-06-20 21:12 GhostHorse 阅读(942) 评论(0) 编辑 收藏 举报这篇是为了放 上篇 的小练习答案
1、写一个存储过程,该存储过程在给定CustomerID的参数下能返回Northwind数据库中的Customer记录。
2、写一个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数,并且将它们作为新行插入到Northwind数据库中的Territories表中去。
3、修改练习2中的存储过程,并在插入前预先检查外键(RegionID)的存在。如果RegionID不存在,则抛出一个含有错误消息为“RegionID is not valid。 Please check your RegionID and try again”的错误。
4、修改练习2中的存储过程,使之处理不存在RegionID时的异常。捕获所有其他类型错误并提供通用的错误消息“An unhandled exception has occurred. Contact your system administration”。
/* 1、写一个存储过程,该存储过程在给定CustomerID的参数下 能返回Northwind数据库中的Customer记录。 */ GO USE Northwind GO CREATE PROC P_GetCustomerByID @CustomerID NCHAR(5) AS SELECT * FROM dbo.Customers WHERE CustomerID=@CustomerID GO --EXEC P_GetCustomerByID 'ALFKI' /* 2、写一个存储过程,该存储过程接受Territory ID、 Territory Description 和Region ID为参数, 并且将它们作为新行插入到Northwind数据库中的Territories表中去。 */ GO USE Northwind GO CREATE PROC p_InsertTerritories @TerritoryID NVARCHAR(20), @TerritoryDescription NCHAR(50), @RegionID int AS BEGIN INSERT INTO Territories ( TerritoryID, TerritoryDescription, RegionID ) VALUES ( @TerritoryID, @TerritoryDescription, @RegionID ) END --EXEC p_InsertTerritories '','',1 /* 3、修改练习2中的存储过程, 并在插入前预先检查外键(RegionID)的存在。 如果RegionID不存在, 则抛出一个含有错误消息为“RegionID is not valid。 Please check your RegionID and try again”的错误。 */ GO USE Northwind GO CREATE PROC p_InsertTerritories3 @TerritoryID NVARCHAR(20), @TerritoryDescription NCHAR(50), @RegionID int AS BEGIN IF (EXISTS(SELECT RegionID FROM Region WHERE RegionID=@RegionID )) BEGIN INSERT INTO Territories ( TerritoryID, TerritoryDescription, RegionID ) VALUES ( @TerritoryID, @TerritoryDescription, @RegionID ) END ELSE RAISERROR(N'RegionID is not valid. Please check your RegionID and try again',10,1) END --EXEC p_InsertTerritories3 '','',0 /* 4、修改练习2中的存储过程,使之处理不存在RegionID时的异常。 捕获所有其他类型错误并提供通用的错误消息“An unhandled exception has occurred. Contact your system administration”。 */ GO USE Northwind GO CREATE PROC p_InsertTerritories4 @TerritoryID NVARCHAR(20), @TerritoryDescription NCHAR(50), @RegionID int AS BEGIN IF (EXISTS(SELECT RegionID FROM Region WHERE RegionID=@RegionID )) BEGIN Begin TRY INSERT INTO Territories ( TerritoryID, TerritoryDescription, RegionID ) VALUES ( @TerritoryID, @TerritoryDescription, @RegionID ) END TRY Begin CATCH RAISERROR (N'An unhandled exception has occurred. Contact your system administration',10,1) RETURN END CATCH END ELSE RAISERROR (N'RegionID is not valid. Please check your RegionID and try again',10,1) END --exec p_InsertTerritories4 '','',1