任务描述
本关任务:学习 SQLServer 中存储过程的创建和使用。
相关知识
存储过程提供了很多 T-SQL 语言没有的高级特性,其传递参数和执行逻辑的能力,为处理各种复杂任务提供了支持。并且,由于存储过程是经过编译后,存储在服务器上的,这减少了执行过程中的传输带宽和执行时间。相反,如果使用 T-SQL ,则每次需要经过传输,再编译和执行。
什么是存储过程
存储过程是 SQLServer 中一个非常重要的数据库对象,它实际是一组为了完成特定功能的 T-SQL 语句集合。存储过程经编译后,存储在数据库中,用户通过指定存储过程的名称,并给出相应的参数,就可以对其进行执行。
SQLServer 中的存储过程具有如下特点:
- 能够包含执行各种数据库操作的语句,并且可以调用其他的存储过程;
- 能够接收输入参数,并以输出参数的形式,将多个数据值返回给调用程序或批处理;
- 向调用程序或批处理,返回一个表明成功或失败(及失败原因)的状态;
- 存储过程经过编译后,存储在数据库中,用户通过使用存储过程的名字,并指定参数来执行它。
存储过程不同于函数,存储过程不返回取代其名称的值,也不能直接在表达式中使用。
存储过程的类型
SQL Server 包含多种可用的存储过程,主要包括用户定义存储过程、扩展存储过程和系统存储过程。
用户定义存储过程
存储过程是指封装了可重用代码的模块或者例程。存储过程可以接收输入参数、向客户端返回表格或者标量结果和消息、调用数据定义语言( DDL )和数据操作语言( DML ),然后返回输入参数。
在 SQL Server 中,用户定义的存储过程有两种类型,即 T-SQL 和 CLR 。
- T-SQL 存储过程是指保存的 T-SQL 语句集合,可以接收和返回用户提供的参数。存储过程也可能从数据库向客户端应用程序返回数据。
- CLR 存储过程是指针对 .NET Framework 公共语言运行时方法的引用,可以接收和返回用户提供的参数。它们在 .NET Framework 程序集中,是作为类的公共静态方法来实现的。
扩展存储过程
扩展存储过程以在 SQL Server 环境外执行的动态链接库( DLL )来实现。扩展存储过程通过前缀 xp_ 来标识,它们以与系统存储过程相似的方式来执行。