日期:2014-05-16  浏览次数:20395 次

数据库总结十存储过程

? 什么是存储过程存储过程(procedure)类似于C语言中的函数
? 用来执行管理任务或应用复杂的业务规则
? 存储过程可以带参数,也可以返回结果
? 存储过程可以包含数据操纵语句、变量、逻辑 控制语句等

存储过程的优点
? 执行速度更快
? 允许模块化程序设计
? 提高系统安全性
? 减少网络流通量
带有输入、输出参数存储过程
create proc sum_course_credit
(@stud_id char(8),@sum_credit tinyint out,@stud_id1 char(8) output)
as
begin
select @sum_credit =sum(course_credit) from tblcourse
       where course_id in(select course_id
                 from  tblscore sc   where stud_id=@stud_id)
select @stud_id1 = @stud_id
end
go
declare @n int,@stud_id2 char(8)
exec  sum_course_credit '31022001' ,@n out, @stud_id2 out
print '学号为:'+@stud_id2+ '学生选修总学分:'+convert(char(4), @n)

? 存储过程是一组预编译的SQL语句,它可以包含数据操纵语句、变量、逻辑控制语句等。
? 存储过程允许带参数,参数分为:
? 输入参数
? 输出参数
   其中,输入参数可以有默认值。
? 输入参数:可以在调用时向存储过程传递参数,此类参数可用来向存储过程中传入值。
? 输出参数从存储过程中返回(输出)值,后面跟随OUTPUT关键字。
? RAISERROR语句用来向用户报告错误。
? output是输出参数
? out是普通输入参数

alter procedure insertABData
as
declare @id int ,@aname varchar(100),@bname varchar(100)
set @id = 1
set @aname = 'a'
set @bname = 'b'
while(@id <1000000)
    begin
    set @aname= 'a'+cast(@id as char(12))
    set @bname= 'b'+cast(@id as char(12))
    insert into A values(@id, @aname)
    insert into B values(@id,@id, @bname)
    set @id = @id+1
    end
execute insertABData