存储过程的优点:减少了服务器/客户端网络流量、
更强的安全性、
代码的重复使用、
更容易维护、
改进的性能
创建存储过程:
USE AdventureWorks2012; GO CREATE PROCEDURE HumanResources.uspGetEmployeesTest2 @LastName nvarchar(50), @FirstName nvarchar(50) AS SET NOCOUNT ON; SELECT FirstName, LastName, Department FROM HumanResources.vEmployeeDepartmentHistory WHERE FirstName = @FirstName AND LastName = @LastName AND EndDate IS NULL; GO
调用存储过程:
EXECUTE HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar'; -- Or EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman', @FirstName = N'Pilar'; GO -- Or EXECUTE HumanResources.uspGetEmployeesTest2 @FirstName = N'Pilar', @LastName = N'Ackerman'; GO
修改存储过程:
ALTER PROCEDURE Purchasing.uspVendorAllInfo @Product varchar(25) AS SQL语句
删除存储过程:
Drop PROCEDURE 存储过程名 GO
授予对存储过程的权限
-
在对象资源管理器中,连接到数据库引擎实例,然后展开该实例。
-
展开“数据库”、过程所属的数据库以及“可编程性”。
-
展开“存储过程”,右键单击要针对其授予权限的过程,再单击“属性”。
-
在“存储过程属性”中,选择“权限”页。
-
若要为用户、数据库角色或应用程序角色授予权限,请单击“搜索”。
-
在“选择用户或角色”中,单击“对象类型”以添加或清除所需的用户和角色。
-
单击”浏览“以显示用户或角色列表。 选择应对其授予权限的用户或角色。
-
在“显式权限”网格中,选择要为指定的用户或角色授予的权限。
-
授予名为 A 的应用程序角色对存储过程 B 的 EXECUTE 权限。
GRANT EXECUTE ON OBJECT:: B TO A;