存储过程(procedure)是SQL语句和控制流语句的预编译集合。存储过程存储在数据库内,可由应
用程序通过一个调用执行,而且允许用户声明变量,逻辑控制语句以及其他强大的编程功能。存
储过程可分为系统存储过程以及用户自定义存储过程。
存储过程的优点,允许模块化程序设计,允许更快地执行,减少网络流量。
二、 常见的系统存储过程
系统存储过程是一组预编译的sql 语句,提供了管理数据库和更新表的机制,并充当从系统表中
检索信息的快捷方式。
常见的系统存储过程。
系统存储过程 说明
sp_databases 列出服务器上所有数据库
sp_helpdb 报告有关数据库或者所有数据库的信息
sp_renamedb 更改数据库的名称
sp_tables 返回当前环境下可查询的对象列表
sp_columns 返回某个表列的信息
sp_help 返回某个表的所有信息
sp_helpconstraint 返回某个表的约束
sp_helpindex 返回某个表的所有索引
sp_stored_procedures 列出当前环境中的所有存储过程
sp_password 修改登录帐户的密码
xp_cmdshell 运行DOS命令
三 、用户自定义的存储过程
除了使用系统存储过程,用户还可以创建自己的存储过程。创建存储过程的语句为:
create procedure
1 、创建不带参数的存储过程
创建存储过程语法:
create proc[edure] 存储过程名
[{@参数 数据类型}[=默认值][output],
........
{@参数N 数据类型}[=默认值][output]]
as sql语句
例句:
if exists(select * from sysobjects where name='proc_stu')
drop procedure proc_stu
go
create procedure proc_stu
as
declare @avgage float;
select @avgAge=avg(stuage) from stuinfo
if (@avgage>20)
begin
print '平均年龄大于岁,年龄最大的为'
select top 1 stuname from stuinfo order by stuage desc
end
else
begin
print '平均年龄不到岁,年龄最小的为'
select top 1 stuname from stuinfo order by stuage
end
2 、创建带输入参数的存储过程
if exists(select * from sysobjects where name='proc_stu2')
drop procedure proc_stu2
go
create procedure proc_stu2
@age int
as
declare @avgage float;
select @avgAge=avg(stuage) from stuinfo
if (@avgage>@age)
begin
print '平均年龄大于'+convert(varchar,@age)+'岁,年龄最大的为'
select top 1 stuname from stuinfo order by stuage desc
end
else
begin
print '平均年龄不到'+convert(varchar,@age)+'岁,年龄最小的为'
select top 1 stuname from stuinfo order by stuage
end
exec proc_stu2