oracle中存储过程的使用

时间:2024-10-02 19:36:14

存储过程

刚开始我接触到数据库的时候,感觉存储过程是很难的,但是当你看完我给你列举的例子,你就能够轻松的掌握存储过程的创建和使用了。

存储过程是在大型数据库系统中存储过程在数据库中经过第一次编译后就不需要再次编译,用户通过指定存储过程的名字并给出参数来执行

例子:

查询计算机系学生成绩,列出学生姓名、课程名、成绩

create  procedure  student_grade1

as

select  sname,cname,grade

from  student  s  join  sc  on  s.sno=sc.cno

join  course  c  on   c,cno=sc.cno

where  sdept  =  ‘计算机系’;

查询某个制定系学生的考试情况,列出姓名,所在系、课程名和成绩

create  procedure  student_grade2

@dept  char(20)   --参数

as

select  sname,sdept,cname,grade

from  student  s,sc,course  c

where  s.sno=sc.cno  and  c.cno=sc.cno

and   sdept  =  @dept

查询某个学生,某门课程的成绩,列出学生名、课程名、成绩

create   procedure  student_grade3

@stu_name  char(10),@course_name  char(20)

as

select  sname,cname,grade

from  student  s  join  sc  on  s.sno=sc.cno

join  course  c  on  c.cno=sc.cno

where

sname =  @stu_name  and

cname=  @course_name

调用过程用exec

exec  student_grade3

可以输入指定学生和某门课程

查询某个学生某门课程的考试成绩,默认课程为数据库

create  procedure  student_grade4

@stu_name  char(10),

@course_name  char(20) = ‘数据库’

as

select  sname,cname,grade

from  student  s  join  sc  on  s.sno=sc.cno

join  course  c  on  c.cno=sc.cno

where

sname =  @stu_name  and

cname=  @course_name

查询指定列,指定性别的学生中年龄大于制定年龄的学生

create   procedure  student_grade5

@sex  char(2) = ‘男’,

@age  int  = 20,

@dept  char(20) = ‘计算机’

as

select  *  from  student

where  sex  =  @sex  and  age<@age

and  sdept  =  @sdept

计算两个数的和

create  procedure  sum

@var1  int ,var2  int,var3  int  output

as

var3 = var1+var2

统计制定课程的平均成绩,并将统计结果用输出参数返回

create  procedure  avggrade

@cname  char(20),

@avg_grade  int  output

as

select  @avg_grade = avggrade

from  sc  join  course  c  on  c.cno=sc.cno

where  cname  =  @cname

将指定课程的学分加2分

create  procedure  udgrade

@cname char(20)

as

update  course  set  credit  =  credit+2

where  cname  = @cname