--存储过程(系统存储过程以sp_开头)
sp_databases --列出服务器上的所有数据库
sp_helpdb --报告有关指定数据库活所有数据库的信息
sp_renamedb --更改数据库的名称
sp_tables --返回当前环境下可查询的对象列表
sp_columns --返回某个列表的所有信息
sp_help --查看、某个表的所有信息
sp_helpconstraint --查看某个表的约束
sp_helpindex --查询某个表的索引
sp_stored_procedures --列出当前环境中的所有存储过程
sp_password --添加或修改登录账户的密码
sp_helptext --显示默认值、未加密的存储过程、用户定义的存储过程、触发或视图的实际文本
exec sp_databases
exec sp_renamedb 'news1','news'
exec sp_helpdb
exec sp_help bank
exec sp_helptext view_bank_stuInfo_1
exec sp_stored_procedures -- 为什么当前数据库中我没创建存储过程,但是可以用命令看到好多存储过程
--扩展存储过程exec xp_cmdshell Dos命令 [NO_OUTPUT]
exec xp_cmdshell 'mkdir D:\bank',NO_OUTPUT --创建文件夹 D:\bank 该命令必须在数据库master 下进行
--用户定义的不带参数的存储过程
use useDB
go
if exists(select * from sysobjects where name='proc_avg')
drop procedure proc_avg
create procedure proc_avg
as
declare @scoreAvg float
select @scoreAvg=AVG(score)from stuInfo_1
print '平均成绩'+convert(varchar(8),@scoreAvg)
exec proc_avg --执行不带参数的存储过程
--带输入参数存储过程
select * from student
select * from exam
go
insert into exam(stu_no,exam_bishi,exam_jishi,exam_bt,exam_jt)
select 's253001',60.2,65.0,'是','是'
union select 's253002',59.2,65.0,'否','是'
union select 's253003',45.2,25.6,'否','否'
use stuDB
go
if exists(select * from sysobjects where name='proc_avg1')
drop procedure proc_avg1
go
create procedure proc_avg1
@bi int,
@ji int
as
print '参加本次考试没有通过的学员'
select student.stu_no,stu_name,exam.exam_bishi,exam.exam_jishi from student inner join exam on student.stu_no=exam.stu_no
where exam_bishi<@bi or exam_jishi<@ji
go
exec proc_avg1 60,65
exec proc_avg1 50,45
--带输出参数的存储过程