版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Oracle9i数据库培训,2009年5月,培训目录,Oracle9i 数据库系统的安装、配置 用户数据库的建立和基本维护 Oracle9i数据库管理基本知识 Sql*plus工具和PL/SQL语言简介,Oracle9i企业版安装环境,Oracle9i Enterprise Editon 环境要求 内存:1GB以上 硬盘:80G以上 CPU:P4 1.0G以上 操作系统:MS WIN2000 AS、WIN2003,Oracle9i客户端安装环境,Oracle9i客户端环境要求 内存:512MB以上 硬盘:30GB以上 CPU:P4 1.0G以上 操作系统:win2000/xp以上.,Oracl
2、e9i安装目录结构,根目录为:x:oracle 主目录为: Ora92在主目录下包含bin、network、assistants等目录; Admin:数据库管理文件目录,包含以数据库命名的子目录; Oradata:数据库文件存储目录; 控制文件 数据文件 联机重做日志文件,Oracle9i安装步骤,1鼠标单击开始安装(Setup.exe),出现下面界面,Oracle9i安装步骤,2单击下一步,确定Oracle主目录名及安装路径。,Oracle9i安装步骤,3单击下一步,选择要安装的产品。,Oracle9i安装步骤,4单击下一步,选择安装类型。,Oracle9i安装步骤,5单击下一步,选择数据库
3、配置。,Oracle9i安装步骤,6单击下一步,输入数据库标识,以前的Oracle版本默认的是Oracl,命名成其他的也可以。,Oracle9i安装步骤,7单击下一步,选择数据文件的存放位置。,Oracle9i安装步骤,8单击下一步,选择数据库字符集,一般中文字符集使用ZHSGBK16,若使用字符集不 当的话数据库中会出现很多“?”,Oracle9i安装步骤,9单击下一步,ORACLE会列出安装产品列表。,Oracle9i安装步骤,10单击下一步,进行ORACLE数据库的安装,在安装的过程中会弹出两次对话框,要 求插入第二章和第三章光盘。,Oracle9i安装步骤,11单击下一步,生成数据库并
4、进行工具配置。,Oracle9i安装步骤,12安装成功。,Oracle9i服务名配置步骤,1Net manager的配置,添加服务命名,选择服务命名,点左侧“+”,Oracle9i服务名配置步骤,2填入服务名,Oracle9i配置步骤,3确定网络协议,常用tcp/ip协议,Oracle9i配置步骤,4填写主机名(ip或完整的计算机名),端口号(与监听器一致),Oracle9i配置步骤,5填写全局标识符SID,Oracle9i配置步骤,6可以选择测试,也可直接完成,Oracle9i配置步骤,7测试界面,Oracle9i监听程序配置步骤,1Net manager的配置,添加服务命名,选择监听程序,
5、点左侧“+”,Oracle9i监听程序配置步骤,2添加地址,Oracle9i监听程序配置步骤,3保存设置,培训目录,Oracle9i 的安装、配置 用户数据库的建立和基本维护 Oracle9i数据库管理基本知识 Sql*plus工具和PL/SQL语言简介,建立表空间、用户、导入数据库,1建立两个表空间(PEDIS40、SYS40_SJK),建立表空间、用户、导入数据库,2点击编辑存储参数,使数据文件已满能够自动扩展,增量为:5M;最大为无限制,建立表空间、用户、导入数据库,3建立用户(PEDIS40和SYS40_SJK),建立表空间、用户、导入数据库,4分别授权角色为DBA和RESOURCE,
6、系统为SELECT ANY TABLE,建立表空间、用户、导入数据库,5导入数据库 在开始菜单中运行中输入命令: Imp 用户名/密码服务名 file=路径文件名 log=路径文件名 full=y 如下: IMP SYS40_SJK/SYS2005ORACLE92 FILE=D:SJKBAKSYS40_SJK.DMP LOG=D:SJKBAK SYS40_SJKLG.LOG FULL=Y IMP PEDIS40/SJK2005ORACLE92 FILE=D:SJKBAKPEDIS40.DMP LOG=D:SJKBAKPEDIS40LG.LOG FULL=Y,Oracle9i数据库卸载,停止Or
7、acle服务; 利用Oracle卸载工具进行卸载; 在注册表中删除; HKEY_LOCAL_MACHINESOFTWAREORACLE KEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICES 删除C:Program FilesOracle和Oracle的安装目录; 重新启动计算机.,Oracle9i数据库的备份与还原,数据文件 每一个Oracle数据库有一个或多个物理的数据文件(Data File)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征: 一个表空间(数据库存储的逻
8、辑单位)由一个或多个数据文件组成; 一个数据文件仅与一个数据库联系; 一个数据文件只属于一个表空间; 可以增大数据文件大小来增加存储空间。,Oracle9i数据库的备份与还原,功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份; 执行环境:可以在Sqlplus.exe或者命令行方式中执行; 查找帮助:在命令行中键入 c:imp -? C:exp -?,Oracle9i数据库的备份与还原,数据的导出 1 将数据库Test完全导出,用户名system 密码manager 导出到D:daochu.dmp exp system/managerTEST file=d:daoc
9、hu.dmp full=y log=d:daochu.log 2 将数据库中system用户与sys用户的表导出 exp system/managerTEST file=d:daochu.dmp owner=(system,sys),Oracle9i数据库的备份与还原,数据的导出 3 将数据库中的表table1 、table2导出 exp system/managerTEST file=d:daochu.dmp tables=(table1,table2) 4 将数据库中的表table1中的字段filed1以00打头的数据导出 exp system/managerTEST file=d:dao
10、chu.dmp tables=(table1)query= where filed1 like 00%,Oracle9i数据库的备份与还原,数据的导入 1 将D:daochu.dmp 中的数据导入 TEST数据库中。 imp system/managerTEST file=d:daochu.dmp 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 2 将d:daochu.dmp中的表table1 导入 imp system/managerTEST file=d:daochu.dmp tables=(table1),培训目录,Or
11、acle9i 的安装、配置 用户数据库的建立和基本维护 Oracle9i数据库管理基本知识 Sql*plus工具和PL/SQL语言简介,Oracle9i数据库存储管理,创建与修改数据文件 可以使用DBA在图形界面中创建与修改数据文件 Alter tablespace users add datafile filename1 size 10m autoextend on next 2m maxsize 50m; Alter tablespace users add datafile d:oracleoradatauserdata3.dbf size 50m autoextend off;,Ora
12、cle9i数据库存储管理,数据库,TableSpace1,TableSpace2,DataFile1,DataFile2,DataFile3,Oracle9i数据库管理,模式对象1 与每个用户相关的一组数据库对象的集合 模式所有者拥有该模式下的所有对象的全部权限 一个表空间可存储不同的模式对象,一个模式的不同对象也可以存储在不同的表空间中,模式对象2 表 视图 索引 序列 数据库链路 过程、函数、包和触发器 同义词 快照 聚集,Oracle9i数据库管理,Oracle数据字典 表和视图构成; 存储oracle系统的活动信息以及所有用户数据库的定义信息; 分为静态数据字典和动态性能表。,Orac
13、le9i数据库管理,静态数据字典 用户视图:以USER做前缀,包含当前用户所拥有的全部对象信息; 扩展用户视图:以ALL做前缀,它除了包含当前用户所拥有的全部对象信息外,还包含公共账户和显示授权用户的全部模式对象; 管理员视图:以DBA做前缀,包含整个数据库的所有对象信息; 检索用户在数据库所拥有模式对象信息 Select * From User_Objects; 检索用户表、视图、聚集信息 Select * From User_Tab_Objects; 检索用户对象访问权限信息 Select * From User_Tab_Privs_Made;,Oracle9i数据库管理,动态性能表 虚拟
14、表,记录了当前数据库的活动状况和性能参数; 动态性能表的所有者为SYS用户,他们均以V$做前缀; V$BGPROCESS列出当前所有后台进程及运行错误数。,Oracle9i数据库管理,Oracle数据库实例 系统全局区(SGA)时数据库信息的共享内存区; 多个Oracle进程; 每个打开的Oracle数据库有一个或多个Oracle实例支撑; Oracle实例高效地管理数据库的所有数据; 为用户和应用程序访问数据库提供服务。,Oracle9i数据库管理,Oracle内存结构 ORACLE在内存存储下列信息: 执行的程序代码; 连接的会话信息; 程序执行期间所需数据和共享的信息; 存储在外存储上的
15、缓冲信息; ORACLE具有下列基本的内存结构: 软件代码区; 系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池; 程序全局区,包括栈区和数据区; 排序区。,Oracle9i数据库管理,Oracle后台进程 DBWR 数据库写入程序 LGWR 日志写入程序 CKPT 检查点 SMON 系统监控 PMON 进程监控 ARCH 归档 RECO 恢复 LCKn 封锁 Dnnn 调度进程 Snnn 服务器,Oracle9i数据库管理,Oracle数据库和实例的启动 启动数据库并使它可用,有三步操作: 启动一个实例 装配数据库 打开数据库 Startup mount Alter database o
16、pen Startup Oracle数据库和实例的关闭 关闭数据库 卸载数据库 停止实例 Shutdown normal|immediate|abort,Oracle9i数据库管理,初始化参数文件 在启动一个实例时,ORACLE必须读入一初始化参数文件(initialization parameter file),该参数文件是一个文本文件,包含有实例配置参数。这些参数置成特殊值,用于初始ORACLE实例的许多内存和进程设置,该参数文件包含: 一个实例所启动的数据库名字 在SGA中存储结构使用多少内存; 在填满在线日志文件后作什么; 数据库控制文件的名字和位置; 在数据库中专用回滚段的名字。 修
17、改初始化文件参数值 直接修改数据库初始化参数文件 执行alter session set 参数名=值 执行alter system set 参数名=值 执行alter system set 参数名=值 deferred,Oracle9i数据库管理,Oracle网络结构 Net9i是Oracle的核心网络部件,它需要同时安装在客户机和服务器上,通过它在客户端与服务器或两个服务器之间建立网络会话。 网络服务名:数据库在客户端的逻辑表示格式为:user/pwsdservice_name 监听器:运行在oracle服务器上的一个独立进程,负责监听客户的连接请求。,Oracle9i数据库管理,Oracl
18、e网络连接示意图,网络服务名称解析(oracle names,tns,dns),Net9i客户,监听器,Oracle服务器,Oracle9i数据库管理,Net9i网络配置 在服务器端配置监听器 在客户端建立网络服务名列表 网络参数配置文件 Listener.ora sqlnet.ora tnsnames.ora names.ora 监听器配置 IPC协议:支持外部过程连接 TCP/IP、端口1521:支持Net8客户连接 TCP/IP、端口2481:支持IIOP客户连接 监听器管理: lsnrctl 命令,Oracle9i数据库管理,Oracle本地解析配置 网络服务器存储到Tnsname.o
19、ra文件中 网络协议 地址信息 数据库服务名称 测试连接 tnsping 网络服务名,Oracle9i 事务管理,一个事务为工作的一个逻辑单位,由一个或多个SQL语句组成。一个事务是一个原子单位,构成事务的全部SQL语句的结果可被全部提交或者全部回滚。一个事务由第一个可执行SQL语句开始,以提交或回滚结束,可以是显式的,也可是隐式的(执行DDL语句)。 在执行一个SQL语句出现错误时,该语句所有影响被回滚,好像该语句没有被执行一样,但它不会引起当前事务先前的工作的丢失。 在ORACLE中一个事务是由一个可执行的SQL语句开始 一个事务以下列任何一个出现而结束 当COMMIT或ROLLBACK(
20、没有SAVEPOINT子句)语句发出。 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。 用户撤消对ORACLE的连接(当前事务提交) 用户进程异常中止(当前事务回滚)。,Oracle9i 事务管理,提交事务 对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中; 在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件, 这是构成提交事务的原子事务; 在行上和表上的封锁被释放; 该事务标志为完成。 Commit,Oracle9i 事务管理,回滚事务 在回滚整个事务(没有引用保留点)时,有下列情况: 在事务中所有SQL语句作的全部修改,利
21、用相应的回滚段被撤消; 所有数据的事务封锁被释放; 事务结束。 Rollback 当事务回滚到一保留点(具有Savepoint)时,有下列情况: 仅在该保留点之后执行的语句被撤消; 该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除; 自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持; 该事务仍可继续。 Rollback To Save,Oracle9i 事务管理,保留点 保留点(Savepoint)是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用
22、保留点;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。,Oracle9i 方案对象管理,创建表 建立表主要指定义下列信息: 列定义 完整性约束 表所在表空间 存储特性 可选择的聚集 从一查询获得数据 语法格式: Create Table TableName ( Column1 Datatype Default expression constraint, Column2 Datatype Default expression constraint, ) Storage子句 其他子
23、句;,Oracle9i 方案对象管理,创建表 Create Table New_Dept ( DPTNO Number(2), DNAME Char(6), LOC Char(13) );,创建视图 Create View View_Name As Query Create View Emp_View As Select EmpNo,Ename,Sal From Emp Where Sal3000;,Oracle9i 方案对象管理,序列 生成唯一整数的模式对象 Create Sequence Sequence_Name Start With Increment By Maxvalue | No
24、Maxvalue Minvalue | NoMinvalue Create Sequence Dept_Seq Start With 60 Increment by 2 Maxvalue 100 引用序列的Currval、Nextval Insert Into Dept Values(Nextval,BeiJing,China);,Oracle9i 方案对象管理,同义词 表、视图、序列或其他模式对象的别名 专用同义词:特定用户模式中使用,该用户控制专用同义词对其他用户的使用 公用同义词:对数据库的每个用户都可用 语法格式: CREATE PUBLIC SYNONYM SY_NAME FOR O
25、BJECT; 实例: CREATE SYNONYM CUST FOR CUSTOMERS; CREATE PUBLIC SYNONYM SALE FOR SALESREPS; SELECT * FROM CUST;,Oracle9i 方案对象管理,用户管理 Create user user_name identified by password Grant priviate to user_name,培训目录,Oracle9i 的安装、配置 用户数据库的建立和基本维护 Oracle9i数据库管理基本知识 Sql*plus工具和PL/SQL语言简介,SQL*Plus工具,Sql*plus是用户常
26、用的使用程序之一 交互式SQL语句编辑、编译、执行环境 PL/SQL块编辑、编译、执行环境 SQL*PLUS命令编辑、编译、执行环境,SQL*Plus工具,SQL*PLUS启动与关闭 启动:Sqlplus -|-?logonfile.ext sqlplus scott/tigerora817 selectdept 其中selectdept: select * from dept where deptno=、空行、/)结束; PL/SQL语句块以(.)结束; 结束输入后,输入/或RUN命令执行SQL缓冲区的语句; 用户所输入的内容均存储在SQL缓冲区中。,SQL*Plus工具,SQL*PLUS编
27、辑命令:L/C/A/DEL/I/CL BUFF EDIT命令 /或RUN命令 SAVE FILENAME REP|APP GET FILENAME LIST|NOLIST 或START FILENAME ARG,SQL语言基础,SQL语言简介 数据操纵语言(DML):SELECT、UPDATE、INSERT、DELETE 事务处理控制语言:COMMIT、ROLLBACK、SAVEPOINT 数据定义语言(DDL):CREATE、ALTER、DROP 数据控制语言(DCL):GRANT、REVOKE、AUDIT、ALTER SYSTEM/SESSION,SQL语言基础,SELECT 语句 SEL
28、ECT ENAME,JOB,SAL FROM EMP E WHERE EXISTS( SELECT * FROM DEPT D WHERE DEPTNO=10 AND E.DEPTNO=D.DEPTNO); 列出10号部门的所有雇员,SQL语言基础,INSERT语句 Insert Into Dept Values(60,SHANGHAI,CHINA); Insert Into Table_Name(Col1,Col2) Select Col1,Col2 From Another_Table Where condition; DELETE语句 Delete From Table Where ;
29、Drop Table Table_Name; UPDATE 语句 Update MyTab Set Code=(Select Deptno From Emp Where Ename=SCOTT) Where Name=SERVICES;,PL/SQL,PL/SQL简介 是ORACLE对标准SQL语言的扩充 增加了过程处理功能 建立和执行程序单元,过程、函数、包 是ORACLE的编程语言 基本单位是逻辑块,包括无名块、过程、函数,PL/SQL,逻辑块的形式 DECLARE -说明(变量、常量、用户数据类型) BEGIN -语句序列(SQL语句、PL/SQL语句) EXCEPTION -例外处理程
30、序(错误处理程序) END; DECLARE v_name VARCHAR2(10); BEGIN SELECT ename into v_name FROM emp; EXCEPTION WHEN TOO_MANY_ROWS THEN . END;,PL/SQL,PL/SQL语法约定 标示符不区分大小写 在PL/SQL块中,声明部分和异常处理部分为选项,执行部分必选,至少有一条语句 标示符长度1到30个字符 标示符的首字符必须为A-Z,a-z,后跟字母、数字、$、_、# 标示符不能与PL/SQL中的表留字同名 语句之间用;分隔 注释:-单行注释,/* */块注释,PL/SQL,ORACLE基
31、本数据类型 VARCHAR2 变长字符串,最长为2000字符。 NUMBER 数值型。 LONG 变长字符数据,最长为2G字节。 DATE 日期型。 RAW 二进制数据,最长为255字节。 LONG RAW 变长二进制数据,最长为2G字节。 ROWID 二六进制串,表示表的行的唯一地址。 CHAR 定长字符数据,最长为255。,PL/SQL,数据类型,PL/SQL,ORACLE与MS SQL SERVER数据类型对比,PL/SQL,常量值 数字常量:100,-10.25,2e-2 字符常量:所有可打印的字符,空格、tab、回车符,放在单引号内,区分大小写 字符串常量:有多个可打印字符组成,放在
32、单引号内,区分大小写a,A 布尔常量:true,false,null,他们不是字符串 日期常量:放在单引号内,与设定的格式一致,PL/SQL,用户自定义类型 SUBTYPE SUB_NAME IS BASE_TYPE NOT NULL SUBTYPE BIRTHDAY IS DATE NOT NULL; SUBTYPE NAME IS CHAR; 使用%TYPE符号以引用变量或数据列类型 USER CHAR(8); SUBTYPE USERNAME IS USER%TYPE; SUBTYPE DEPTID IS DEPT.DEPTNO%TYPE; 用户自定义例子 DECLARE SUBTYPE
33、 DEPTID IS DEPT.DEPTNO%TYPE; DEPT_ID DEPTID; BEGIN SELECT DEPTNO INTO DEPT_ID FROM DEPT WHERE DEPTNO=10; DBMS_OUTPUT.PUT_LINE(DEPT_ID); END;,PL/SQL,运算符 算术运算符:+,-,*,/ 比较运算符:=,!=,=,=,=,in,not in,any,all,between and,not between and,exists,is null,is not null,like escape ,not like escape 逻辑运算符:and,or,no
34、t 连接运算符:| 集合运算符:union,union all,intersect,minus,PL/SQL,变量和常量 声明变量:v_name datatype not null :=|default expression 常量声明:c_name constant datatype not null :=|default expression 例子: declare v_name char(8); v_sal number(7,2):=0; v_gender boolean not null default true; v_pi constant number(8,7):=3.1415926
35、; 在声明语句中,一个语句只能声明一个变量或常量:v_name,v_job char(8)此语句导致编译错误 可使用%type将已经声明的变量或数据库列类型制定给所声明的变量或常量 可使用%rowtype将表或游标的数据结构声明为一个记录变量,PL/SQL,变量和常量 Declare v_name char(8); v_name1 v_name%type:=USER1; V_name2 emp.ename%type; v_emp1 emp%rowtype; cursor c1 is select ename,job from emp; v_emp2 c1%rowtype; 使用%type声明可
36、以进行初始化,%rowtype则不能初始化,PL/SQL,变量赋值方法 声明时直接初始化:v_nit1 integer:=100; 用赋值操作符::=,v_name:=abcd; 用select、fetch同时为多个变量赋值 declare v_name varchar2(10); v_job varchar2(9); v_sal number(7,2); cursor c1 is select ename,job,sal from emp; Begin select ename,job,sal into v_name,v_job,v_sal from emp where ename=SCOT
37、T; dbms_output.put_line(v_name); open c1; fetch c1 into v_name,v_job,v_sal; dbms_output.put_line(v_name);,PL/SQL,变量的作用域 变量的作用域重声明开始到当前块结束 declare dept_rec1 dept%rowtype; cursor c1 is select deptno,dname,loc from dept; begin open c1; fetch c1 into dept_rec1; dbms_output.put_line(dept_rec1.deptno); de
38、clare dept_rec2 c1%rowtype; begin dept_rec2:=dept_rec1; dbms_output.put_line(dept_rec2.dname); end; dbms_outpu.put_line(dept_rec2.dname); End;,PL/SQL,条件语句 IF condition THEN Sequence_of_statements; END IF; IF condition THEN Sequence_of_statement1; ELSE Sequence_of_statement2; END IF;,IF condition1 TH
39、EN Sequence_of_statement1; ELSIF condition2 THEN Sequence_of_statement2; ELSIF condition3 THEN Sequence_of_statement3; else 语句 END IF;,PL/SQL,条件语句例子 Declare v_sal number(7,2) begin select sal into v_sal from emp where ename=SCOTT; if v_sal=1000 then dbms_output.put_line(工资小于1000); else dbms_output.p
40、ut_line(工资大于1000); end if; end;,PL/SQL,Loop循环 语法: loop 语句 exit或exit when 条件 end loop; 无条件循环 第一种exit 与条件与配合使用,例子: Declare v_I integer:=1; v_s integer:=0; Begin loop exit when v_I100; v_s:=v_s+v_I; v_I:=v_I+1; end loop; Dbms_output.put_line(v_s); End;,PL/SQL,While_loop循环 语法: while condition loop state
41、ment end loop; 条件循环 Declare v_I integer:=1; v_s integer:=0; Begin while v_I=100 loop v_s:=v_s+v_I; v_I:=v_I+1; end loop; Dbms_output.put_line(v_s); End;,PL/SQL,For_loop循环 语法: for 循环变量 in reverse 初始值表达式.终值表达式 loop 语句 end loop; 知道循环次数的循环 Reverse 倒循环 Declare v_s integer:=0; Begin for I in 1.100 loop v_
42、s:=v_s+I; end loop; dbms_output.put_line(v_s); End; 循环变量I不用定义.,PL/SQL,创建过程 语法: CREATE OR REPLACE PROCEDURE c_name(argin|out|in out datatype,) invoke_right is|as block; CREATE OR REPLACE PROCEDURE proC_demo(dept_no number default 10, sal_sum out number,emp_count out integer) is begin select
43、 sum(sal),count(*) into sal_sum,emp_count from emp where deptno=dept_no; End proc_demo;,PL/SQL,调用过程: declare v_num integer; v_sum number(8,2); begin proc_demo(30,v_sum,v_num); dbms_output.put_line(30号部门工资总和:|v_sum|,人数:|v_num); End;,PL/SQL,包 一组相关过程、函数、变量、常量和游标等pl/sql程序设计元素的组合 具有面向对象程序设计语言的特点 包类似于java
44、和c+语言中的类 包中的元素分为共有元素和私有元素 包包括包头和包体两个部分,缺一不可,PL/SQL,创建包头 包头只是对包内的数据类型、变量、常量、游标、子程序、异常等元素的定义声明,这些元素为公有元素 语法:create or replace package package_name authid current_user|definer is|as 公有元素的定义 end package_name; 创建包体 包体是对包头定义部分的具体实现,在包体重可以定义包的私有元素(类型、变量、子程序等) 语法:create or replace package body package_name
45、is|as 私有元素定义 公有元素的实现 begin 语句; end;,PL/SQL,使用包 在包头和包体创建后,在pl/sql程序中使用包 格式:包名.元素名称 参见包的具体实例,PL/SQL,触发器 触发器是特殊类型的储存过程,它也储存在数据库服务器中 当指定的触发事件发生时oracle自动执行 一个触发器由三部分构成:触发事件、触发约束和触发动作 Oracle支持的触发事件包括:DML语句、DDL语句、数据库系统事件或用户事件 触发约束为布尔表达式,其值为TRUE,触发事件发生 触发动作为触发器要执行的PL/SQL块,PL/SQL,触发器优点 可以根据需要限制用户的数据处理和创建对象操作
46、 能够实施比FOREIGN KEY、CHECK等数据库声明完整性约束更复杂的检查和操作,从而保证数据数据库的一致性 自动产生派生列的列值 能够自动建立事件日志、同步复制数据或出版数据库数据等,PL/SQL,创建触发器 DML语句触发器 CREATE OR REPLACE TRIGGER schema.trigger_name BEFORE|AFTER|INSTEAD OF INSERT|DELETE|UPDATE OF COLUMN,COLUMN ON SCHEMA.TABLE_NAME|VIEW_NAME REFERENCING OLD AS OLD|NEW AS NEW FOR EACH
47、ROW WHEN (CONDITION) PL/SQL块|CALL_PROCEDURE,PL/SQL,创建触发器 DDL语句触发器 CREATE OR REPLACE TIRGGER schema. Trigger_name BEFORE|AFTER CREATE|ALTER|DROPOR CREATE|ALTER|DROP ON schema.SCHEMA|DATABASE PL/SQL块|CALL_PROCEDURE,PL/SQL,创建触发器 系统或用户触发器 CREATE OR REPLACE TRIGGER schema. Trigger_name BEFORE|AFTER START
48、UP|SHUTDOWN|SERVERERROR| LOGON|LOGOFF| ON schema.SCHEMA|DATABASE PL/SQL块|CALL_PROCEDURE,PL/SQL,创建触发器说明 BEFORE和AFTER指触发器的触发时序 INSTEAD OF选项是ORACLE激活触发器,而不再执行触发事件。只能对视图和对象视图建立INSTEAD OF触发器 在DML语句触发器中,可使用INSERT、DELETE和UPDATE的组合表示,用OR分隔 当建立UPDATE触发器时,可用OF进一步限制表中哪些类修改时才激活触发器 FOR EACH ROW选项说明触发器为行触发器 REFER
49、ENCEING子句说明相关名称,在行触发器的PL/SQL块和WHEN子句中可以使用相关名称参照当前行的新、旧劣值,PL/SQL块中应用相关名称时,必须在前面加冒号(:),但在WHEN子句中不加冒号(:) DDL语句触发器中,CREATE、ALTER和DROP分别说明触发器在制定模式(用SCHEMA选项)或数据库(用DATABASE选项)中创建、修改、删除数据库对象时激活的触发器,PL/SQL,创建触发器说明 DDL语句触发器支持的数据库对象包括:表空间、聚集、表、视图、索引、序列、同义词、拥护、过程、函数、包等 PL/SQL块时触发器的语句体,是触发器要执行的操作 在PL/SQL块中不能包含C
50、OMMIT,ROLLBACK,SAVEPOINT和SET CONSTRAINT 事务控制语句 CALL_PROCEDURE调用存储过程语句,格式:CALL 模式.类型.包.过程 数据库链路(参数1,参数2); 参见创建触发器实例 启用和禁用触发器: ALTER TRIGGERschema.trigger_name ENABLE|DISABLE; 检索触发器信息:利用数据字典USER_TRIGGERS,ALL_TRIGGERS,DBA_TRIGGERS 删除触发器:DROP TRIGGER trig_name,PL/SQL,游标 指向sql内存区的指针 为应用程序提供了一种对查询结果集的数据行进
51、行单独处理的方法 Pl/sql游标分为显示游标和隐式游标 在每个用户会话中,可以同时打开多个游标,PL/SQL,游标操作 声明游标 打开游标 提取和处理游标 关闭游标,PL/SQL,声明游标 CURSOR cursor_name parameter,parameter) RETURN return_type IS select_statement; 其中:parameter_name in datatype :=|default expression 在指定数据类型时,不能使用长度约束 Cursor c1 is select dname,loc from dept where deptno=3
52、0; Cursor c2(dept_no number default 10) is select dname,loc from dept where deptno=dept_no; Cursor c3(dept_no number default 10) return dept%rowtype is select * from dept where deptno=dept_no;,PL/SQL,声明游标 在包中定义游标,将游标定义与游标体分开 create or replace package my_pack as cursor c4(dept_no number default 10) return emp%rowtype; end my_pack; Create or replace pa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国家开放大学电大《基础写作》考题
- 无痛肠镜检查的并发症处理
- 上海市杨浦区2026年中考一模语文试卷及答案
- 抛体运动(知识+9大重难题型+过关验收)解析版-2025-2026学年高一物理上学期期末复习(人教版)
- 内蒙古包头市昆都仑区2025-2026学年七年级上学期期末考试生物试卷(含答案)
- 直播营销与运营 课件 项目四 案例拓展
- 2026届江西省上高二中下学期高三开学考试历史试题(含答案)
- 电力系统安全运行与检修规程(标准版)
- 城市基础设施投资与管理手册
- 舞台剧候场管理与秩序维护手册
- 矿山电力设计标准
- 【妇产科学9版】第18章外阴及阴道炎症
- 2026年江西工商职业技术学院单招职业技能测试题库及答案1套
- 非亲生子赔偿协议书
- 2025年汉语国际教育复试真题
- 2025年高中英语教师资格证考试真题解析及答案
- 2026中考模拟测试试卷及答案(含完整听力音频、完整听力材料)
- 2025年山东省济南市中考化学试题(含答案)
- 机械车间安全隐患排查总结报告
- 足球三级裁判试题及答案
- 房屋地基出租协议书
评论
0/150
提交评论