9.1.1 创建存储过程
(1)创建查询学生基本信息的存储过程proc_stu_sno
在SSMS中,单击“新建查询”按钮,在SQL查询编辑器中输入以下T-SQL语句:
create procedure proc_stu_sno
@ssno char(7)
as
select倡from studentwhere sno=@ssno
go
执行语句后如显示消息为“命令已成功完成”,则说明执行完毕,且存储过程已经创建。创建的存储过程可在对象资源管理器中的“数据库-jxgl-可编程性”节点下查看到,如图9.1所示。

图9.1 创建和查看存储过程
测试存储过程,如查询学号1104001同学的基本信息,如图9.2所示。

图9.2 以参数方式执行存储过程proc_stu_sno
(2)创建输入课程数据的存储过程proc_c_enter
此存储过程的SQL语句为:
create proc proc_c_enter
@ccno char(5),@ccn char(20),@ccreditnumeric(3,1),@cct int
as
insert into course
values(@ccno,@ccn,@ccredit,@cct)
go
创建后进行的测试表明此存储过程功能符合要求,如图9.3所示。

图9.3 测试存储过程proc_c_enter
(3)创建按给定课程号统计成绩数据的存储过程proc_sc_cal
此存储过程的语句如下:
create proc proc_sc_cal
@ccno char(5),@t9 int output,@avg numeric(3,1) output,@max numeric(3,1)
output,@min numeric(3,1)output
AS
if@ccno!=′′
begin
select@t9=count(sno)from sc where cno=@ccno and score between 90 and 100 select@avg=avg(score),@max=max(score),@min=min(score)from sc where cno=@ccno
end
else
print′请指定课程号!′go
执行后,就可完成这个存储过程的创建。然后进行测试,以检查其是否能按设计要求工作。首先为存储过程的每个参数定义对应的变量,以便传递参数值。以课程号“C03”为例,将它赋值给变量@ccno作为输入参数,而变量@t9,@avg,@max和@min分别用来接收这个存储过程返回的选课人数、平均分数、最高分数和最低分数。完整的T-SQL语句如下:
declare@ccno char(5),@t9 int,@avg numeric(3,1),@max numeric(3,1),@min numeric(3,1)
SET@ccno=′C03′
exec proc_sc_cal@ccno,@t9 output,@avg output,@max output,@min output print@ccno+′课程′
print′选课人数:′+convert(char(5),@t9)
print′平均分:′+convert(char(5),@avg)
print′最高分:′+convert(char(5),@max)
print′最低分:′+convert(char(5),@min)
go
测试结果如图9.4所示。