存储过程的类型
在 Microsoft SQL Server 中有多种可用的存储过程。本主题简要介绍每种存储过程,并为每种存储过程中提供了一个示例。
用户定义的存储过程
存储过程是指封装了可重用代码的模块或例程。存储过程可以接受输入参数、向客户端返回表格或标量结果和消息、调用数据定义语言 (DDL) 和数据操作语言 (DML) 语句,然后返回输出参数。在 SQL Server 2008 中,存储过程有两种类型:Transact-SQL 或 CLR。
Transact-SQL
Transact-SQL 存储过程是指保存的 Transact-SQL 语句集合,可以接受和返回用户提供的参数。例如,存储过程中可能包含根据客户端应用程序提供的信息在一个或多个表中插入新行所需的语句。存储过程也可能从数据库向客户端应用程序返回数据。例如,电子商务 Web 应用程序可能使用存储过程根据联机用户指定的搜索条件返回有关特定产品的信息。
CLR
CLR 存储过程是指对 Microsoft .NET Framework 公共语言运行时 (CLR) 方法的引用,可以接受和返回用户提供的参数。它们在 .NET Framework 程序集中是作为类的公共静态方法实现的。有关详细信息,请参阅 CLR 存储过程。
扩展存储过程
重要提示 |
---|
后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。请改用 CLR 集成。 |
扩展存储过程允许您使用编程语言(例如 C)创建自己的外部例程。扩展存储过程是指 Microsoft SQL Server 的实例可以动态加载和运行的 DLL。扩展存储过程直接在 SQL Server 的实例的地址空间中运行,可以使用 SQL Server 扩展存储过程 API 完成编程。
注意 |
---|
CLR 集成提供了更为可靠和安全的替代方法来编写扩展存储过程。 |
系统存储过程
SQL Server 中的许多管理活动都是通过一种特殊的存储过程执行的,这种存储过程被称为系统存储过程。例如,sys.sp_changedbowner 就是一个系统存储过程。从物理意义上讲,系统存储过程存储在源数据库中,并且带有 sp_ 前缀。从逻辑意义上讲,系统存储过程出现在每个系统定义数据库和用户定义数据库的 sys 构架中。在 SQL Server 2008 中,可将 GRANT、DENY 和 REVOKE 权限应用于系统存储过程。有关系统存储过程的完整列表,请参阅系统存储过程 (Transact-SQL)。
SQL Server 支持在 SQL Server 和外部程序之间提供一个接口以实现各种维护活动的系统存储过程。这些扩展存储程序使用 xp_ 前缀。有关扩展存储过程的完整列表,请参阅常规系统存储过程 (Transact-SQL)。