欢迎访问web记录!每一步的成长都是一种幸福,聪明的女孩擅长记录幸福!
您现在的位置:web记录 > 数据库 >

存储过程的创建与管理

更新时间:2012-11-21 浏览次数:
存储过程的创建与管理
实验目的:
1、掌握存储过程的概念和分类
2、掌握存储过程的创建与管理
3、掌握存储过程的查看、删除和修改
实验内容:(以下存储过程在人事数据库下面创建)
1、 创建并执行无参存储过程stu_zgda,完成的功能是显示zgda1表中的职工档案信息。
2、 创建并执行无参存储过程stu_renshi,完成的功能是在表bm1、表gzqk1、表zgda1中查询以下字段:E_id,E_name,E_sex,E_zhicheng,Dp_name,E_recsalary
3、 创建并执行带输入参数的存储过程stu_id,该存储过程根据输入的职工编号E_id,从表zgda1中查找相关的职工信息,包括E_id,E_name,E_sex,E_marry等字段值。
4、 创建并执行带输入参数的存储过程stu_zhigong,该存储过程根据输入参数所给定的表名关键字,分别查询表bm1,表zgda1,表gaqk1的记录内容。(使用多分支选择语句设计)
5、 创建并执行带输入参数的存储过程stu_xibu,该存储过程根据输入参数给定的系部名称Dp_name,显示该系的教职工总人数和平均工资。
6、 创建一个带有输入和输出参数的存储过程stu_age,该存储过程根据传入的教职工编号E_id,在zgda1表中计算此教工的年龄,根据程序的执行结果返回不同的值,程序执行成功,返回整数0,如果执行出错,则返回错误号。
7、 创建一个带有参数的存储过程stu_gzcx,该存储过程输入参数为一个工资值,查询哪些系(dp_name)的,哪些教职工(E_id,E_name)的工资比给定的工资值高,显示具体的工资(E_recsalary)。并且根据程序的执行根据程序的执行结果返回不同的值,程序执行成功,返回整数0,如果执行出错,则返回错误号。
8、对已经创建的存储过程stu_xibu分别使用查看命令Sp_help,Sp_helptext,Sp_denpends进行查看。
9、使用alter命令对存储过程stu_xibu进行加密。
10、使用命令sp_rename对存储过程stu_zgda进行重命名。


1.
use 人事数据库
go
CREATE PROCEDURE stu_zgda
AS
Select * From zgda
Go
exec  stu_zgda
2.
create procedure stu_renshi
as
select E_sex,zgda.E_id,zgda.E_name,E_zhicheng,Dp_name,E_recsalary from bm
join zgda on bm.Dp_id=zgda.Dp_id join gzpk on zgda.E_id=gzpk.E_id
go
exec stu_renshi
3.
create proc stu_id
@E_id char(6)
as
select E_id,E_name,E_sex,E_marry from zgda where E_id=@E_id
go
exec stu_id @E_id='0001'
4.
If exists(select name from sysobjects where name='stu_zhigong' and type='p')
   drop procedure stu_zhigong
Go
Create proc stu_zhigong
@selectkey varchar(10)
as
Declare @tablenam varchar(20)
Select @tablenam =
     case
         when @selectkey  like '%b%' then 'bm'
         when @selectkey  like '%g%' then 'zgda'
         when @selectkey  like '%p%'  then 'gzpk'
     end
If  @tablenam IS NULL
    PRINT '没有对应的表!'
Else
  execute ('select * from '+ @tablenam )
Go
Exec stu_zhigong b
go
5.
create proc stu_xibu
@name char(20)
as
select bm.Dp_name,COUNT(*) as 教职工部人数,AVG(E_recsalary) as 平均工资
from bm join zgda on bm.Dp_id=zgda.Dp_id and
  [url=mailtop_name=@name]Dp_name=@name[/url] join gzpk on zgda.E_id=gzpk.E_id
group  by bm.Dp_name
exec stu_xibu @name='化工系'
6.
If exists(select name from sysobjects where name='stu_age' and type='p')
    drop procedure stu_age
Go
Create proc stu_age
    @E_id varchar(10),@age int output
As
Declare @errorvalue int
Set @errorvalue=0
Select @age=year(getdate())-year(E_birthday)  from zgda where E_id=@E_id
If   (@@error<>0)   
Set @errorvalue=@@error
Return @errorvalue
go   
          Declare @stuage int,
               @returnvalue int,
               @E_id char(10)
                Set @E_id='0001'
     Exec @returnvalue=stu_age @E_id,@stuage output
     Print '本程序的执行结果为: '
     Print '程序返回值='+cast(@returnvalue as char(2))
     Print '学号为"'+RTRIM(@E_id)+'"的学生的年龄是'+CAST(@stuage as char(2))+'岁  '
7.
create proc stu_gzcx
@gz money
as
declare @errorvalue int
set @errorvalue=0
select  dp_name,a.e_id,a.e_name,e_recsalary from bm,zgda as a,gzqk
where a.dp_id=bm.dp_id and a.e_id=gzqk.e_id and e_recsalary>@gz
If   (@@error<>0)   
Set @errorvalue=@@error
Return @errorvalue
go
exec stu_gzcx a
go
8.
Sp_help stu_xibu
go
Sp_helptext stu_xibu
go
Sp_depends stu_xibu
9.
alter proc stu_xibu
@name char(20)
with encryption
as
select bm.Dp_name,COUNT(*) as 教职工部人数,AVG(E_recsalary) as 平均工资
from bm join zgda on bm.Dp_id=zgda.Dp_id and
  [url=mailtop_name=@name]Dp_name=@name[/url] join gzpk on zgda.E_id=gzpk.E_id
group  by bm.Dp_name
exec stu_xibu @name='化工系'
10.sp_rename  stu_zgda,stu_zgdanew
关键词:

    + 相关信息

    前端案例

    返回顶部 欢迎访问web记录!每一步的成长都是一种幸福,聪明的女孩擅长记录幸福!