数据库实用技术教程教学课件作者基于Oracle系统电子教案第8章课件.pptVIP

  • 3
  • 0
  • 约1.53万字
  • 约 79页
  • 2016-12-26 发布于广东
  • 举报

数据库实用技术教程教学课件作者基于Oracle系统电子教案第8章课件.ppt

数据库原理与应用 第8章 PL/SQL应用 学习目标 ● 掌握存储过程、存储函数、触发器等高级数据库方案对象的基本作用。 ● 掌握利用企业管理控制台和命令行两种方式创建、调用、修改、删除存储过程、存储函数、触发器等高级数据库方案对象方法。 第8章 PL/SQL应用 存储过程 在学生选课系统中有时需要利用学生的出生日期计算学生的年龄,这个功能可以利用前台编程实现,但学生出生日期数据需要通过网络传输到前台,前台计算后如果需要存储则再将结果传到后台数据库服务器中,这个过程增大了网络数据传输量,影响了数据修改的速度,如果能直接在后台编程实现统计就克服了这个弊端,此时可以创建存储过程。 8.1 存储过程 8.1.1 创建存储过程 Oracle数据库中创建存储过程的方法有企业管理控制台方式和命令行方式两种。 ⒈ 企业管理控制台方式 登录到数据库后,选择“方案”→方案名→“源类型”→“过程”,单击鼠标右键,在快捷菜单中选中“创建”,出现创建存储过程窗口,“一般信息”选项卡如图8-1所示。 ⒈ 企业管理控制台方式 “一般信息”选项卡用于定义存储过程的一般属性,主要信息如表8-1所示。 ⒈ 企业管理控制台方式 PL/SQL源代码包含存储过程的参数说明和过程体的声明、执行、异常处理部分,其中过程的声明、执行、异常处理部分在第7章已讲过,参数说明部分在最前面,用括号括起来,多个参数之间用“,”分隔,其说明格式为: 参数名 IN|OUT|INOUT 数据类型 其中,IN|OUT|INOUT 为参数的类型。IN是将参数值传递进过程内部,即定义的参数为传入参数,它在过程内部是只读的,赋值后也不能改变;OUT将参数值传递给调用存储过程者,即定义的参数为传出参数;INOUT是前两者的结合,即定义的参数为传入传出参数,它可以将参数值传递进存储过程,也可以将参数值传递给调用存储过程者,在过程内部它是可以被改写的。缺省是传入参数。 注意:为参数定义数据类型时只指明类型不指定长度。 设置完毕后,单击“显示SQL”按钮,即可显示自动形成的创建存储过程的CREATE PROCEDURE语句,此语句即为命令行方式创建存储过程的命令,单击“创建”按钮即可完成存储过程的创建。 ⒉ 命令行方式 命令行方式创建存储过程的方法为在SQL Plus或SQL Plus Worksheet中使用CREATE PROCEDURE命令创建存储过程,命令的一般格式如下: CREATE [OR REPLACE] PROCEDURE [方案名.]存储过程名 [(参数名1 IN|OUT|IN OUT 参数类型) [,参数名2 IN|OUT|IN OUT 参数类型] ……)] IS|AS 存储过程体; ⒉ 命令行方式 【例8.1】首先创建一班级人数统计表(class_count),表中包含班级编号(class_nochar(4))和人数(cou number(2))两个字段,其中班级编号是主键;创建存储过程pro_classcount,要求实现不同班级编号学生人数的统计功能,且将各个班级的人数存储在班级人数统计表中。 (1)创建班级人数统计表 CREATE TABLE class_count ( class_no char(4) PRIMARY KEY, cou number(2) ); ⒉ 命令行方式 (2)创建按班级统计并存储学生人数的存储过程 CREATE PROCEDURE pro_classcount ( cno CHAR) --定义参数cno,为缺省类型传入型参数 as nn NUMBER(5); begin SELECT COUNT(*) INTO nn FROM student WHERE class_no=cno; --统计班级人数 UPDATE class_count SET cou=nn WHERE class_no=cno; DBMS_OUTPUT.PUT_LINE(nn); END; 8.1 存储过程 8.1.2 调用存储过程 创建了存储过程后,就可以调用它了。方法是可以在SQL Plus、SQL PlusWorksheet环境中,或者在与Oracle数据库连接的前台数据库应用程序中通过引用存储过程名来调用它。调用格式如下: 过程名(参数名1,参数名2,……); 注意:在调用存储过程时,如果有参数,要求形参与实参的类型、个数必须一致。 8.1.2 调用存储过程 【例8.2】在SQL PlusWorksheet环境中编写PL/SQL程序调用存储过程pro_classcount。 DECLARE cc CHAR(4); BEGIN cc:=0101; pro_class

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档