定义:
一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等。
优点:
1、执行速度更快
2、允许模块化程序设计
3、提高系统安全性
4、减少网络流通量
创建和调用存储过程
数据库结构如下:
SELECT TOP 1000 [id] ,[writtenExam] ,[labExam] ,[stuName] ,[stuNo] FROM [pubs].[dbo].[StuInfo]
内容如下:
一、不带参数的存储过程
Create procedure [dbo].[pro_StuInfo] as
declare @writtenAvg float,@labAvg float --用到输出的变量
begin select @writtenAvg = AVG(writtenExam),@labAvg=AVG(labExam) from StuInfo print '笔试平均分:'+ convert(nvarchar(50),@writtenavg) print '机试平均分:'+ convert(nvarchar(50),@labAvg) end
--执行存储过程
EXEC pro_StuInfo
--结果
笔试平均分:65 机试平均分:55
二、带参数的存储过程
Create procedure pro_StuInfo1 @writtenAvg float = 50,@labAvg float = 50 --参数变量 as begin print '及格的学生如下:' select * from StuInfo where writtenExam >= @writtenAvg and labExam >= @labAvg end go --默认执行 EXEC pro_StuInfo1
--修改参数执行
EXEC pro_StuInfo1 60,70
--指定参数值
EXEC pro_StuInfo1 @labAvg=60
三、带输出参数
Create procedure pro_StuInfo2 @outpasscount int output, @writtenAvg float = 50,@labAvg float = 50 as begin select @outpasscount = COUNT(*) from StuInfo where writtenExam >= @writtenAvg and labExam >= @labAvg end go
--执行存储过程
DECLARE @outpasscount int EXEC pro_StuInfo2 @outpasscount OUTPUT PRINT '及格的学生数为:' + convert(nvarchar(50),@outpasscount)
--执行结果如下:
及格的学生数为:3