存储过程1--清华大学计算中心ORACLE培训资料

合集下载

ORACLE存储过程详解教程

ORACLE存储过程详解教程

ORACLE存储过程详解教程ORACLE存储过程是一种预先编译的数据库对象,它包含了一组执行特定任务的SQL语句和程序逻辑。

存储过程可以在数据库中存储并被多个客户端应用程序调用,从而提高应用程序的性能和安全性。

在本篇文章中,我们将详细介绍ORACLE存储过程的概念、语法和使用方法。

一、存储过程的概念存储过程是一段预定义的SQL代码块,它可以接受参数并可选地返回结果。

存储过程在执行时可以访问数据库对象并执行事务处理。

存储过程可以被调用多次,减少了代码的编写和重复性的执行。

存储过程具有以下特点:1.存储过程是预先编译的,因此执行速度比动态SQL语句更快。

2.存储过程可以接受输入参数,并可以在参数基础上进行一系列的SQL操作。

3.存储过程可以返回一个或多个结果集。

4.存储过程可以包含条件判断、循环和异常处理等控制结构。

二、存储过程的语法创建存储过程的语法如下:CREATE [OR REPLACE] PROCEDURE procedure_name[ (parameter_name [IN,OUT] datatype [, ...]) ]IS[local_variable_declarations]BEGIN[executable_statements]EXCEPTION[exception_handling_statements]END;存储过程的语法包含以下几个部分:1.CREATE[ORREPLACE]PROCEDURE:指定创建一个存储过程。

CREATE关键字用于创建新的存储过程,而ORREPLACE关键字用于替换已存在的同名存储过程。

2. procedure_name:指定创建的存储过程的名称。

3. (parameter_name [IN,OUT] datatype[, ...]):指定存储过程的输入和输出参数。

参数的名称和数据类型必须指定,并且可以指定IN或OUT关键字来表示参数的传入和传出。

oracle培训材料

oracle培训材料

oracle培训材料数据库管理系统是计算机科学领域中的一个重要概念,它被广泛应用于各种企业和组织的信息管理中。

Oracle作为世界领先的关系数据库管理系统(RDBMS),在企业级应用中扮演着至关重要的角色。

为了帮助学习者更好地掌握Oracle技术,本文将提供一份详细的Oracle培训材料。

第一部分:Oracle简介Oracle作为一种关系型数据库管理系统,为企业级应用提供了稳定、安全、高效的数据存储和处理能力。

它具备许多强大的功能,如事务控制、数据完整性、数据安全性和多用户支持等。

Oracle还提供了丰富的工具和语言来管理和操作数据库,如SQL语言、PL/SQL语言以及Oracle企业管理界面等。

第二部分:Oracle的安装与配置在使用Oracle之前,我们首先需要进行安装和配置。

以下是一些基本步骤:1. 下载Oracle软件包:访问Oracle官方网站,下载与你系统版本相对应的软件包。

2. 安装Oracle软件:解压软件包,并按照安装向导的提示进行安装。

3. 创建数据库实例:使用Oracle提供的工具,创建一个数据库实例,并设置相关参数。

4. 配置监听器:监听器是连接客户端与数据库之间的桥梁,需要进行配置以确保正常通信。

5. 测试连接:使用SQL*Plus等工具,测试数据库连接是否成功。

第三部分:Oracle的基本操作学习Oracle的基本操作是掌握该技术的第一步,以下是一些常用的操作:1. 创建数据库表:使用CREATE TABLE语句来创建数据库表,指定表名和各个列的属性。

2. 插入数据:使用INSERT INTO语句向表中插入数据,可以一次插入多行记录。

3. 查询数据:使用SELECT语句从表中检索数据,可以使用WHERE子句来过滤结果。

4. 更新数据:使用UPDATE语句修改表中的数据,通过WHERE 子句指定要更新的记录。

5. 删除数据:使用DELETE语句删除表中的数据,也可以通过WHERE子句来限制删除的范围。

ORACLE存储过程详解教程

ORACLE存储过程详解教程

ORACLE存储过程详解教程Oracle存储过程是一种存储在数据库中的可重用的程序单元,它可以被调用并执行。

存储过程通常用于执行一系列相关的数据库操作,可以提高性能、可维护性和安全性。

1.存储过程的优势:-提高性能:存储过程可以减少网络通信的开销,因为它们在数据库服务器上执行,而不是在客户端上。

-改善可维护性:存储过程可以在数据库中进行维护和修改,而无需重新编译客户端应用程序。

-增强安全性:存储过程可以对敏感数据进行访问控制,并通过参数化查询来防止SQL注入攻击。

2.创建存储过程的语法:```sqlCREATE [OR REPLACE] PROCEDURE procedure_name[(parameter_name [IN , OUT , IN OUT] data_type [:= default_value])]IS--声明变量BEGIN--程序代码END [procedure_name];```-CREATE[ORREPLACE]PROCEDURE语句用于创建一个新的存储过程。

- procedure_name是存储过程的名称。

- parameter_name是参数的名称,可以使用IN、OUT或IN OUT修饰符指定参数的类型。

- data_type是参数的数据类型。

- default_value是参数的默认值。

-IS关键字用于声明存储过程的开头。

-BEGIN和END语句用于包围存储过程的代码。

3.存储过程的示例:下面是一个简单的存储过程示例,它返回指定员工的薪水:```sqlCREATE OR REPLACE PROCEDURE get_employee_salary(employee_id IN employees.employee_id%TYPE,salary OUT employees.salary%TYPE)ISBEGINSELECT salary INTO salaryFROM employeesWHERE employee_id = employee_id;END get_employee_salary;```- get_employee_salary是存储过程的名称。

清华大学计算中心ORACLE培训的资料

清华大学计算中心ORACLE培训的资料
Oracle9i在UNIX下的安装 (Sun Solaris)
Oracle9i 在Unix下安装步骤:
以root用户登录UNIX,创建Oracle用户 创建Oracle数据库安装目录,符合OFA 编辑Oracle用户的.profile文件,定义安
装必须的变量 配置操作系统核心 Reboot操作系统,以Oracle登录 运行安装文件开始安装…
E_mail:tengyc263
创 建 用 户
创建Oracle9i的 OFA安装目录
(Oracle8、Oracle8i、Oracle9i)
Oracle-OFA目录结构
在Unix下使用 OFA安装目录的优点:
对于大型数据库系统进行磁盘数据存储的优化分 配,以避免产生瓶颈
合理组织文件存储结构 防止磁盘失败、保证数据库安全 平衡磁盘I/O 对于$ORACLE_HOME目录进行文件分散 Unix目录独立性 数据库文件分散存储(镜像日志与控制文件)
Intelligent Agent
Oracle 实用工具
在线文档
E_mail:tengyc263
Oracle9i Server安装类型
Standard Edition: Preconfigured seed database Networking services Oracle Enterprise Manager Console Oracle utilities
Oracle9i Database 9.2.0 安装硬件需求
内存需求
Oracle9i Server: 512MB Oracle9i Management and Infrastructure:512M Oracle9i Client:256MB

PLSQL--清华大学计算中心ORACLE培训资料共29页文档

PLSQL--清华大学计算中心ORACLE培训资料共29页文档

2
PL/SQL语言的特点
减少对于Oracle核心的访问,降低网络负责 数据库数据类型集成
PL/SQL支持全部的SQL数据类型,这些共享的数据类型与 SQL所提供的直接存取相结合,使PL/SQL与Oracle数 据字典结合成一体. PL/SQL与Oracle RDBMS集成在一起,可以使用PL/SQL 的集成数据类型,使变量的数据类型在数据库的操作中实 时确定.
5. 模块式的过程化语言,以块为单位执行
6. 使用PL/SQL可以优化程序设计,得到更好的性能
(例如,执行 10个SQL语句,需要访问10次 Oracle核心,如果
10个SQL组成一个PL/SQL程序,则只需访问一次Oracle 核
心,将结果一次返回给用户,则程序执行效率高,节省时间,降
低通信量)
《PL/SQL程序设计》
%TYPE 属性 + 不必知道My_name的真正数据类型
+ 当数据库中列ename列定义改变时,数 据库运行时自动修改.
%ROWTYPE:
行类型
《PL/SQL程序设计》
11
PL/SQL程序设计
PL/SQL基础
PL/SQL 的记录类型 把逻辑相关的数据作为一个单元存储起来,在
Declare 段中定义reco来自d类型数据,使某一✓ BINARY_INTEGER
可存储带符号整数,为整数计算优化性能
✓ DEC
NUMBER的子类型,存储实型数据
✓ DOUBLE PRECISION
NUMBER的子类型,高精度实数
✓ INTEGER NUMBER的子类型,整数
✓ INT
NUMBER的子类型,整数
PL/SQL数据类型扩展
数字型

创建--清华大学计算中心ORACLE培训资料

创建--清华大学计算中心ORACLE培训资料

Oracle9i PFILE文件格式 PFILE文件格式
# Resource Manager RESOURCE_MANAGER_PLAN=SYSTEM_PLAN # Sort, Hash Joins, Bitmap Indexes SORT_AREA_SIZE=524288 # System Managed Undo and Rollback Segments UNDO_MANAGEMENT=AUTO UNDO_TABLESPACE=undotbs
E_mail:tengyc@
Oracle9i PFILE文件格式 PFILE文件格式
# Cache and I/O DB_BLOCK_SIZE=4096 DB_CACHE_SIZE=20971520 # Cursors and Library Cache CURSOR_SHARING=SIMILAR OPEN_CURSORS=300 # Diagnostics and Statistics BACKGROUND_DUMP_DEST=/vobs/oracle/admin/mynewdb/bdump CORE_DUMP_DEST=/vobs/oracle/admin/mynewdb/cdump TIMED_STATISTICS=TRUE USER_DUMP_DEST=/vobs/oracle/admin/mynewdb/udump # Control File Configuration CONTROL_FILES=("/vobs/oracle/oradata/mynewdb/control01.ctl", "/vobs/oracle/oradata/mynewdb/control02.ctl", "/vobs/oracle/oradata/mynewdb/control03.ctl")

LOB--清华大学计算中心ORACLE培训资料

LOB--清华大学计算中心ORACLE培训资料

LOB使用举例
SQL>CREATE TABLE Employee( name VARCHAR2(50), birth_date DATE, id_code NUMBER(7), resume CLOB, photo BLOB) LOB (resume,photo) STORE AS (TABLESPACE lob_data STORAGE (INITIAL 1m NEXT 1m PCTINCREASE 50 ) CHUNK 2048 NOCACHE );
DIRECTORY创建方法
操作系统创建相应的物理路径。 用户应具有CREATE ANY DIRECTORY权限。 使用CREATE DIRECTORY 命令创建目录与 物理路径连接。 为使用该目录的用户授予READ ON DIRECTORY权限。

tengyc@
BFILE使用举例

使用外部文件BFILE概念:



BFILE用于存储外部文件、将文件存储与操作系 统目录。 BFILE更新必须依赖于操作系统。 使用BFILE时,必须预先建立DIRECTORY目录。 用户通过DIRECTORY存取外部文件。 需要相应的存取DIRECTORY的权限。
tengyc@
LOB使用举例
CHUNK参数设置:

CHUNK的尺寸决定访问LOB数据时一次读取数 据量 。 以大数据量读写LOB列时,可以给大的CHUNK。 CHUNK取值方法: A.小于等于Next B.DB_BLOCK_SIZE的倍数 C.缺省值:2k
LOB使用举例
CACHE设置
可以设置CACHE、NOCACHE 如果经常访问LOB列数据,可以考虑设置 CACHE。 缺省为NOCACHE。

ORACLE学习笔记_第一讲_存储过程入门

ORACLE学习笔记_第一讲_存储过程入门

第一讲存储过程入门1、内容:(1)定义函数、定义过程的基本语法①函数/过程头部分:名称、参数和返回值类型;②声明部分:变量声明;③执行部分;④异常处理部分。

(2)变量①定义变量的基本语法;②变量类型:标量(scalar)数据类型<number、character、data/time、boolean>③变量的赋值;④变量的使用。

(3)操作符的使用①算术操作符:+(加)、-(减)、*(乘)、/(除)、**(乘方)②关系操作符:>(大于)、>=(大于等于)、<(小于)、<=(小于等于)、=(等于)、!=(不等于)、<>(不等于)、:=(赋值操作符)③比较操作符:IS NULL、LIKE、BETWEEN、IN④逻辑操作符:AND、OR、NOT(4)游标的基本使用方法①游标的定义②游标的打开③循环获取游标行记录④游标的关闭(5)函数的调用(6)通过PL-SQL编写、调试函数和过程2、应用举例(1)准备在数据库中建表,表名为student,字段内容如下:(2)函数createNumber--定义函数,作用:获取student表中no字段的最大值,将student表中no为0的记录其no字段的值从当前最--大的no值开始,依次+1进行更新create or replace function cr eateNumber--返回值类型return integer--定义变量is--定义number类型的变量num_max number;--定义变量,变量类型根据表student中的cuid来定,这两个变量在函数中没有用,只是--作为知识点介绍s_cuid student.cuid%type;s_no student.no%type;--定义游标,且向游标传递参数,参数的定义方法和普通参数的定义方法相同cursor student_line(no_value student.no%type) is select cuid,no from student where no =no_value;--定义游标行变量,即变量类型为游标行对象stu_row student_line%rowtype;begin--通过sql给变量num_ma x赋值select max(no) into num_ma x from student;--输出变量num_maxdbms_output.put_line(num_max);--传递参数,打开游标open student_line(0);--循环获取游标行记录loop--获取游标行记录fetch student_line into stu_row;--直至游标走到结束位置才退出循环exit when student_line%notfound;--num_max自增num_max:=num_max+1;--输出调试信息dbms_output.put_line('now studentinfo:'||'s_cuid='||stu_row.cuid||',s_no='||stu_row.no||'*****num_max='||num_max); --执行表更新操作update student set no=num_max where cuid=stu_row.cuid;--结束循环end loop;--关闭游标close student_line;--返回结果return 0;end createNumber;(3)函数test--循环往表student中插入一些测试记录create or replace function test(flag in number)--说明返回值类型return int--开始定义变量is--定义int类型变量num int;begin--变量赋值num:=flag;--开始循环loopnum:=num+1;--选择语句if (num>50) thenexit;elseinsert into student(cuid,name,no,remark) values(num,'zhuyong',0,'待更新');end if;--结束循环end loop;--返回值return num;end;(4)调用的存储过程--调用函数test和createNumber的存储过程create or replace procedure testx--开始定义变量isc number;begin--调用test函数c:=test(5);--输出test函数执行结果dbms_output.put_line(c);--调用createnumber函数c:=createnumber;--输出createnumber函数的调用结果dbms_output.put_line(c);end testx;(5)测试代码和方法在PL-SQL中选中存储过程名称,右键菜单中选择“test”项,即可进行调试。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9
创建包(Create Package)
Create or Replace Package 包名 IS AS

Procedure 过程名();

Function 函数名() Return 数据类型;

变量定义;

例外定义;

光标定义;

……;
End 包名;
10
创建包体(Create Package Body)
end if;

Exception
在Exception段中使用
When NO_DATA_FOUND
THEN …
When CURSOR_ALREADY_OPEN THEN

When TOO_MANY_ROWS
THEN ...

When out_of_range
THEN ...
段 END;
8
Package 包的设计
17
数据库触发器与存储过程比较:
✓ 数据库触发器是在进行数据操纵时自动触发的, 存储过程要通过程序调用。
✓ 在数据库触发器中可以调用存储过程、函数。 ✓ 在触发器中禁止使用COMMIT 、ROLLBACK语句,
存储过程中可以使用PL/SQL中可以使用的全部SQL 语句。 ✓ 在触发器中不得间接调用含有COMMIT、ROLLBACK语
21
每一个成功者都有一个开始。勇于开始,才能找到成
After
Delete
On 表名
Update {of}
FOR EACH ROW
Declare ……. Begin …… End;
PL/SQL块
20
创建行级触发器:
✓ 当触发器已经存在时,使用Replace选项。 ✓ Update中的of是可选项,用于指定Update语句要修改的 ✓ 根据进行一个操作时触发器的触发次数决定是用语句级 ✓ 当某一操作结果只影响一行时,语句级触发器与行触发
THEN ...

When
OTHERS
THEN ...
END;
7
存储过程例外处理(EXCEPTION)
1. 用户定义例外的使用
Declare
在Declare段定义
out_of_range EXCEPTION;
Begin
… if v_sal >MAX_SAL then
RAISE
在Begin段中引起
out_of_range;
Create or Replace Package Body 包名
IS AS
Procedure 过程定义; Procedure 过程定义; Function 函数定义; Function 函数定义;
……; End 包名;
11
创建包
12
创建包体
1
----定义过程
13
创建包体
2 3
----定义过程
end if;
End;
6
存储过程例外处理(EXCEPTION)
1. 例外的使用
Declare
在Exception段中 对返回信息一一作出响应
Begin
Exception
When NO_DATA_FOUND
THEN …

When CURSOR_ALREADY_OPEN THEN

When TOO_MANY_ROWS …
18
创建语句级触发器
SQL> Create or Replace Trigger 触发器名
Before Insert
After
Delete
On 表名
Update {of}
Declare ……. Begin …… End;
PL/SQL块
19
创建行级触发器
SQL> Create or Replace Trigger 触发器名 Before Insert
《Oracle9i PL/SQL》
存储过程、包、数据库触发器设计
(Oracle9i Procedural Option)
1
存储过程与应用级存储过程的区别
Storage Procedure
1.存储于数据库中 2.文档存储在数据字典 3.可以被应用、及开发
工具调用 4.可以被其他存储过程
调用
Form Procedure
14
包的调用
15
Oracle Database Trigger 数据库触发器设计
16
数据库触发器作用
防止非法的数据库操纵、维护数据库安全 对数据库的操作进行审计,存储历史数据 完成数据库初始化处理 控制数据库的数据完整性 进行相关数据的修改 完成数据复制 自动完成数据库统计计算 限制数据库操作的时间、权限等,控制实体的安全性
ZERO_DIVIDE
INVALID_CURSOR
✓ 用户自定义例外
用户定义的例外必须在DECLARE段中说明,在Begin段中用RAISE引 起,
5
存储过程例外处理(EXCEPTION)
✓ SQL语句执行结果:
在处理SQL时,这类消息所使用的SQL语句包括: INSERT ,UPDATE,DELETE子句。
3
创建函数(Create Function)
Create or Replace Function 函数名(变量
IN OUT
数据类型)
Return 数据类型ISIN OUTAS
缺省
变量定义;
Begin

Return 值;
可以省略
End 函数名;
4
存储过程例外处理(EXCEPTION)
✓ 在PL/SQL中,警告信息、出错信息、或返回信息统称为例外(Exception)。O
预定义的例外: 是由PL/SQL运行过程中,系统自动产生的信息。
用户自定义例外: 是用户根据需要,自己定义使用的例外,执行时 由用户自己引起。
✓ Oracle预定义的常用例外:
CURSOR_ALREADY_OPEN VALUE_ERROR
NO_DATA_FOUND
INVALID_NUMBER
TOO_MANY_ROWS
1.存储于Form应用中 2.文档可以从应用中得到 3.只可以由Form调用
4.可以调用存储过程
2
创建存储过程(Create Procedure)
Create or Replace Procedure
过程名(变量
IN OUT
数据类型)
IN OUT IS
AS
缺省
变量定义;
Begin
过…


可以省略
End 过程名;
✓ 执行结果属性:
SQL%FOUND SQL%NOTFOUND
SQL%ROWCOUNT
✓ 例外处理方法:
Begin
update emp
set sal=1200 where empno=1234;
if SQL%NOTFOUND then insert into Errors(empno,sal)
values(1234,1200);
相关文档
最新文档