存储过程是封装了T-SQL代码的服务器端例程。存储过程可以有输入和输出参数,可以返回多个查询的结果集,也允许调用具有副作用的代码。通过存储过程不但可以对数据进行修改,也可以对数据库架构进行修改。
和使用特定的普通代码相比,使用存储过程可以获得以下好处:
1.存储过程可以封装逻辑处理。如果需要修改存储过程的实现,则只要在数据库的一个地方进行修改,存储过程的所有用户就能够使用修改过的版本。
2.通过存储过程可以更好地控制安全性。可以授予用户执行某个存储过程的权限,而不是授予用户直接执行底层操作的权限。
3. 在存储过程中可以整合所有的错误处理,当有错误发生时,默默地进行纠正错误的操作。
4. 存储过程可以提高执行性能。
CREATE PROC dbo.usp_GetCustomerOrders
@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 语句)影响了多少行的消息。