10.1 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; |
浙公网安备 33010602011771号