1
数据库技术及应用
1.10.3.3 7.3.3 Transact-SQL创建存储过程
7.3.3 Transact-SQL创建存储过程

存储过程定义包括两个主要内容:过程名和参数的说明以及过程体(包含执行存储过程操作的SQL语句)。

创建存储过程前,应该注意以下事项:

●不能将CREATEPROCEDURE语句与其他SQL语句组合到单个批处理中。

●存储过程是数据库对象,名称必须遵循标识符的命名规则。

●只能在当前数据库中创建存储过程。

●存储过程没有预定义的最大大小。

语法格式:

参数说明如下:

●number:是可选整数,用于对同名的过程分组。

●VARYING:指定作为输出参数支持的结果集。该参数由存储过程动态构造,其内容可能发生改变。

●[=default][OUT|OUTPUT][READONLY]:default,参数的默认值。如果定义了default值,则无需指定此参数的值即可执行过程;OUTPUT,指示参数是输出参数。此选项的值可以返回给调用EXECUTE的语句。使用OUTPUT参数将值返回给过程的调用方;READONLY,指示不能在过程的主体中更新或修改参数。

●ENCRYPTION:表示SQL Server加密syscomments表中包含CREATEPROC语句文本的条目,可防止将过程作为SQL Server复制的一部分发布,防止用户使用系统存储过程读取存储过程的定义文本。

●RECOMPILE:表明SQL Server每次运行该过程时,将对其重新编译。

●EXECUTEAS:指定在模块调用方的上下文中执行该模块中的语句。

【例7-4】创建一个存储过程st_stu,对所有课程进行查看,包括选修该课程的学生学号、姓名和成绩。代码如下:

定义完存储过程后,可以使用EXECUTE命令直接执行,例如,执行以下存储过程:

在成绩管理中,教师通常需要汇总某课程的考试情况,例如,统计不同分数段的人数,这种功能就可以通过存储过程来实现。下面用CREATEPROCEDURE语句创建存储过程实现该要求。

【例7-5】建立存储过程st_score统计某课程不同分数段的人数。

执行该存储过程的调用语句:

执行结果如图7-16所示。

图7-16 执行结果