SQL Server存储过程的基本指南
目录
- SQL Server存储过程的基本指南
- 简介
- 创建一个简单的存储过程
- 执行存储过程
- 修改存储过程
- 删除存储过程
简介
SQL Server存储过程将一个或多个T-SQL语句分为逻辑单元。存储过程存储在SQL Server数据库服务器中。
当第一次调用存储过程时,SQL Server会创建一个执行计划并将其存储在缓存中。在存储过程的后续执行中,SQL Server重用该计划,以快速可靠的性能执行存储过程。
创建一个简单的存储过程
以下SELECT语句从自行车商店数据库的products
(产品)表中返回产品列表:
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;
使用CREATE PROCEDURE
语句创建一个包装上述SQL语句的存储过程:
CREATE PROCEDURE uspProductList
AS
BEGIN
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
product_name;
END;
其中:uspProductList
是存储过程名字,AS
关键字分隔存储过程的头部和主体部分。
如果存储过程只有一条语句,则该语句的开始的BEGIN
和结尾的END
关键字是可选的。
然而,通常都会写上,这样代码更清晰。
CREATE PROCEDURE
可以缩写成CREATE PROC
。
要编译此存储过程,可以在SQL Server Management Studio中将其作为普通SQL语句执行,如下图所示:
执行成功:
Commands completed successfully.
这说明存储过程已成功编译并保存到数据库目录中。
可以在Programmability>Stored Procedures
(可编程性>存储过程
)下找到存储过程:
执行存储过程
EXECUTE sp_name;
--或者
EXEC sp_name
其中sp_name是存储过程名。
比如要执行存储过程uspProductList
:
EXEC uspProductList;
存储过程输出:
修改存储过程
可以使用ALTER PROCEDURE
语句
首先,右键单击存储过程名称并选择修改菜单项,打开存储过程以查看其内容:
其次,通过按价格而不是产品名称对产品进行排序来更改存储过程中的查询语句:
ALTER PROCEDURE uspProductList
AS
BEGIN
SELECT
product_name,
list_price
FROM
production.products
ORDER BY
list_price
END;
然后点击执行按钮执行:
Commands completed successfully.
现在,再次执行存储过程,将看到更改生效:
EXEC uspProductList;
删除存储过程
DROP PROCEDURE sp_name;
--或者
DROP PROC sp_name;
--比如删除uspProductList
DROP PROCEDURE uspProductList;