1.存储过程的概述
存储过程是SQL语句的预编译集合,它存储在数据库内,可由应用程序通过一个调用执行,而且充许用户声明
变量、有条件执行以及其它强大的功能。使用存储过程可以使程序模块化,可以在服务器端更快的执行,可
以减少网络流量,还可以增强安全性。
2.存储过程的创建
create procedure 存储过程名 [参数列表] as  SQL语句
3.存储过程的执行
exec procedure 参数1、参数2。。。。。。
4.修改存储过程
alter procedure 存储过程名
5.删除存储过程
drop procedure存储过程名
6.例题
学生表(学号、姓名、住址、年级)   成绩表(考号、学号、成绩)
例1、创建立不带参数的存储过程
   --查询所有学生的考试成绩
create proc proc_student1
as
select 姓名,成绩 from 学生表,成绩表
where 学生表.学号=成绩表.学号
执行:EXEC proc_student1
例2、创建带输入参数的存储过程
--查询某位学生的成绩
create proc proc_student2
@stuName varchar(8)
as
select姓名,成绩 from 学生表
inner join成绩表 on 学生表.学号=成绩表.学号
where 姓名 =@stuName
执行:EXEC proc_student2 ‘Mary’
例3、创建带输出参数的存储过程
--按照所要查找班级求出平均分
create proc proc_student3
@Year char(20),@SumCj int output
as
select @SumCj=sum(成绩) from 学生表
inner join 成绩表 on 学生表.学号=成绩表.学号
where 年级 =@Year
执行:declare @sumCj1 int
EXEC proc_student3 ‘一年二班’,@sumCj1 output
Print @sumCj1
例4、创建带返回值的存储过程
   Return 语句可以带回一个值,也可带回结果集。
程序如果遇到return,那么return语句以下的所有语句将不再执行,程序
返回存储过程执行的起点。
--将所以查找的班级返回平均值
create proc proc_student4
@Year char(2)
as
begin
declare @avgCj int
if exists(select * from student where 年级 =@Year)
  begin
    select @avgCj=avg(成绩) from学生表
    inner join成绩表 on 学生表.学号=成绩表.学号
    where 年级=成绩表.学号
  end
else
    set @avgCj=-1
return @avgCj
end