SQL存储过程实例练习(答案)

这篇是为了放 上篇 的小练习答案

 

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

 

 

 

转载于:https://www.cnblogs.com/GhostHorse/archive/2012/06/20/sql_stored_procedure_exercise_answer.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值