存储过程是封装了T-SQL代码的服务器端例程。存储过程能够有输入和输出参数,能够返回多个查询的结果集,也容许调用具备反作用的代码。经过存储过程不但能够对数据进行修改,也能够对数据库架构进行修改。数据库
和使用特定的普通代码相比,使用存储过程能够得到如下好处:安全
1.存储过程能够封装逻辑处理。若是须要修改存储过程的实现,则只要在数据库的一个地方进行修改,存储过程的全部用户就可以使用修改过的版本。服务器
2.经过存储过程能够更好地控制安全性。能够授予用户执行某个存储过程的权限,而不是授予用户直接执行底层操做的权限。架构
3. 在存储过程当中能够整合全部的错误处理,当有错误发生时,默默地进行纠正错误的操做。性能
4. 存储过程能够提升执行性能。服务器端
CREATE PROC dbo.usp_GetCustomerOrdersdate
@custid AS INT,权限
@fromdate AS DATETIME='19000101',数据
@todate AS DATETIME='99991231',查询
@numrows AS INT OUTPUT
AS
SET NOCOUNT ON;
SELECT orderid,custid,empid,orderdate
FROM dbo.Orders
WHERE
custid=@custid
AND orderdate>=@fromdate
AND orderdate<@todate;
SET @numrows=@@rowcount;
GO
命令 SET NOCOUNT ON 用于禁止显示DML语句(如存储过程当中的SELECT 语句)影响了多少行的消息。