存储过程

SQL Server 中的函数与存储过程编写

Meghan Kwartler

IT Consultant

什么是存储过程?

是什么?

例程可:

  • 接收输入参数
  • 执行动作(EXECUTE、SELECT、INSERT、UPDATE、DELETE 及其他 SP 语句)
  • 返回状态(成功或失败)
  • 返回输出参数
SQL Server 中的函数与存储过程编写

为何使用存储过程?

为何使用?

  • 可减少执行时间
  • 可降低网络流量
  • 支持模块化编程
  • 提升安全性
SQL Server 中的函数与存储过程编写

有何区别?

UDF

  • 必须返回值
    • 允许表值
  • 可在内联 SELECT 中执行
  • 无输出参数
  • 不允许 INSERT、UPDATE、DELETE
  • 不能执行 SP
  • 无错误处理

SP

  • 返回值可选
    • 不支持表值
  • 不能内联到 SELECT 执行
  • 可返回输出参数与状态
  • 允许 INSERT、UPDATE、DELETE
  • 可执行函数与 SP
  • TRY...CATCH 错误处理
SQL Server 中的函数与存储过程编写

带 OUTPUT 参数的 CREATE PROCEDURE

-- First four lines of code
-- SP name must be unique 
CREATE PROCEDURE dbo.cuspGetRideHrsOneDay 
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
.......
SQL Server 中的函数与存储过程编写

带 OUTPUT 参数的 CREATE PROCEDURE

CREATE PROCEDURE dbo.cuspGetRideHrsOneDay
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
SET NOCOUNT ON
BEGIN
SELECT 
  @RideHrsOut = SUM(
    DATEDIFF(second, PickupDate, DropoffDate)
  )/ 3600
FROM YellowTripData
WHERE CONVERT(date, PickupDate) = @DateParm
RETURN
END;
SQL Server 中的函数与存储过程编写

输出参数 vs. 返回值

输出参数

  • 可为任意数据类型
  • 每个 SP 可声明多个
  • 不能为表值参数

返回值

  • 用于指示成功或失败
  • 仅整数类型
  • 0 表示成功,非 0 表示失败
SQL Server 中的函数与存储过程编写

您已准备好编写 CREATE PROCEDURE!

SQL Server 中的函数与存储过程编写

Preparing Video For Download...