《oracle培训材料.pptx》由会员分享,可在线阅读,更多相关《oracle培训材料.pptx(116页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Oracle9i数据库培训2009年5月培训目录nOracle9i数据库系统的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介Oracle9i企业版安装环境nOracle9iEnterpriseEditon环境要求n内存:1GB以上n硬盘:80G以上nCPU:P41.0G以上n操作系统:MSWIN2000AS、WIN2003Oracle9i客户端安装环境nOracle9i客户端环境要求n内存:512MB以上n硬盘:30GB以上nCPU:P41.0G以上n操作系统:win2000/xp以上.Oracle9i安装目录结构n根目录
2、为:x:oraclen主目录为:nOra92在主目录下包含bin、network、assistants等目录;nAdmin:数据库管理文件目录,包含以数据库命名的子目录;nOradata:数据库文件存储目录;n控制文件n数据文件n联机重做日志文件Oracle9i安装步骤1 1鼠标单击开始安装(鼠标单击开始安装(Setup.exeSetup.exe),出现下面界面),出现下面界面Oracle9i安装步骤2单击下一步,确定单击下一步,确定Oracle主目录名及安装路径。主目录名及安装路径。Oracle9i安装步骤3单击下一步,选择要安装的产品。单击下一步,选择要安装的产品。Oracle9i安装步骤
3、4单击下一步,选择安装类型。单击下一步,选择安装类型。Oracle9i安装步骤5单击下一步,选择数据库配置。单击下一步,选择数据库配置。Oracle9i安装步骤6单击下一步,输入数据库标识,以前的单击下一步,输入数据库标识,以前的Oracle版本默认的是版本默认的是Oracl,命,命名成其他的也可以。名成其他的也可以。Oracle9i安装步骤7单击下一步,选择数据文件的存放位置。单击下一步,选择数据文件的存放位置。Oracle9i安装步骤8单击下一步,选择数据库字符集,一般中文字符集使用单击下一步,选择数据库字符集,一般中文字符集使用ZHSGBK16,若,若使用字符集不使用字符集不 当的话数据
4、库中会出现很多当的话数据库中会出现很多“?”Oracle9i安装步骤9单击下一步,单击下一步,ORACLE会列出安装产品列表。会列出安装产品列表。Oracle9i安装步骤10单击下一步,进行单击下一步,进行ORACLE数据库的安装,在安装的过程中会弹出两数据库的安装,在安装的过程中会弹出两次对话框,要次对话框,要 求插入第二章和第三章光盘。求插入第二章和第三章光盘。Oracle9i安装步骤11单击下一步,生成数据库并进行工具配置。单击下一步,生成数据库并进行工具配置。Oracle9i安装步骤12安装成功。安装成功。Oracle9i服务名配置步骤1Net manager的配置的配置,添加服务命名
5、添加服务命名,选择服务命名选择服务命名,点左侧点左侧“+”Oracle9i服务名配置步骤2填入服务名填入服务名Oracle9i配置步骤3确定网络协议确定网络协议,常用常用tcp/ip协议协议Oracle9i配置步骤4填写主机名填写主机名(ip或完整的计算机名或完整的计算机名),端口号端口号(与监听器一致与监听器一致)Oracle9i配置步骤5填写全局标识符填写全局标识符SIDOracle9i配置步骤6可以选择测试可以选择测试,也可直接完成也可直接完成Oracle9i配置步骤7测试界面测试界面Oracle9i监听程序配置步骤1Net manager的配置的配置,添加服务命名添加服务命名,选择监听
6、程序选择监听程序,点左侧点左侧“+”Oracle9i监听程序配置步骤2添加地址添加地址Oracle9i监听程序配置步骤3保存设置保存设置培训目录nOracle9i的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介建立表空间、用户、导入数据库1建立两个表空间(建立两个表空间(PEDIS40PEDIS40、SYS40_SJKSYS40_SJK)建立表空间、用户、导入数据库2点击编辑存储参数点击编辑存储参数,使数据文件已满能够自动扩展,增量为:使数据文件已满能够自动扩展,增量为:5M5M;最大为无限制最大为无限制 建立表空间、用户
7、、导入数据库3 3建立用户(建立用户(PEDIS40PEDIS40和和SYS40_SJKSYS40_SJK)建立表空间、用户、导入数据库4 4分别授权角色为分别授权角色为DBADBA和和RESOURCERESOURCE,系统为,系统为SELECT ANY SELECT ANY TABLETABLE建立表空间、用户、导入数据库5 5导入数据库导入数据库在开始菜单中运行中输入命令:在开始菜单中运行中输入命令:Imp Imp 用户名用户名/密码密码服务名服务名 file=file=路径路径 文件名文件名 log=log=路径路径 文件文件名名 full=y full=y如下:如下:IMP SYS40
8、_SJK/SYS2005ORACLE92 IMP SYS40_SJK/SYS2005ORACLE92 FILE=D:SJKBAKSYS40_SJK.DMP FILE=D:SJKBAKSYS40_SJK.DMP LOG=D:SJKBAK SYS40_SJKLG.LOG FULL=YLOG=D:SJKBAK SYS40_SJKLG.LOG FULL=YIMP PEDIS40/SJK2005ORACLE92 IMP PEDIS40/SJK2005ORACLE92 FILE=D:SJKBAKPEDIS40.DMP FILE=D:SJKBAKPEDIS40.DMP LOG=D:SJKBAKPEDIS40
9、LG.LOG FULL=YLOG=D:SJKBAKPEDIS40LG.LOG FULL=YOracle9i数据库卸载n停止Oracle服务;n利用Oracle卸载工具进行卸载;n在注册表中删除;nHKEY_LOCAL_MACHINESOFTWAREORACLEnKEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICESn删除C:ProgramFilesOracle和Oracle的安装目录;n重新启动计算机.Oracle9i数据库的备份与还原数据文件n每一个Oracle数据库有一个或多个物理的数据文件(DataFile)。一个数据库的数据文件包含全部数据库数
10、据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:n一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成;n一个数据文件仅与一个数据库联系;n一个数据文件只属于一个表空间;n可以增大数据文件大小来增加存储空间。Oracle9i数据库的备份与还原n功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份;n执行环境:可以在Sqlplus.exe或者命令行方式中执行;n查找帮助:在命令行中键入nc:imp-?nC:exp-?Oracle9i数据库的备份与还原n数据的导出1 将数据库将数据库Test完全导出完全导出,用户名用户名sy
11、stem 密码密码manager 导出导出到到D:daochu.dmp expsystem/managerTESTfile=d:daochu.dmpfull=ylog=d:daochu.log2 将数据库中将数据库中system用户与用户与sys用户的表导出用户的表导出expsystem/managerTESTfile=d:daochu.dmpowner=(system,sys)Oracle9i数据库的备份与还原n数据的导出3 将数据库中的表将数据库中的表table1、table2导出导出expsystem/managerTESTfile=d:daochu.dmptables=(table1,
12、table2)4 将数据库中的表将数据库中的表table1中的字段中的字段filed1以以00打头的数据导打头的数据导出出expsystem/managerTESTfile=d:daochu.dmptables=(table1)query=wherefiled1like00%Oracle9i数据库的备份与还原n数据的导入1 将将D:daochu.dmp 中的数据导入中的数据导入 TEST数据库中。数据库中。impsystem/managerTESTfile=d:daochu.dmp上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上ignore=y就可以了。2 将
13、将d:daochu.dmp中的表中的表table1 导入导入impsystem/managerTESTfile=d:daochu.dmptables=(table1)培训目录nOracle9i的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介Oracle9i数据库存储管理n创建与修改数据文件n可以使用DBA在图形界面中创建与修改数据文件nAlter tablespace users add datafile filename1 size 10m autoextend on next 2m maxsize 50m;nAlter
14、 tablespace users add datafile d:oracleoradatauserdata3.dbf size 50m autoextend off;Oracle9i数据库存储管理数据库数据库TableSpace1TableSpace2DataFile1DataFile2DataFile3Oracle9i数据库管理n模式对象1n与每个用户相关的一组数据库对象的集合n模式所有者拥有该模式下的所有对象的全部权限n一个表空间可存储不同的模式对象,一个模式的不同对象也可以存储在不同的表空间中n模式对象2n表n视图n索引n序列n数据库链路n过程、函数、包和触发器n同义词n快照n聚集Or
15、acle9i数据库管理nOracle数据字典n表和视图构成;n存储oracle系统的活动信息以及所有用户数据库的定义信息;n分为静态数据字典和动态性能表。Oracle9i数据库管理n静态数据字典n用户视图:以USER做前缀,包含当前用户所拥有的全部对象信息;n扩展用户视图:以ALL做前缀,它除了包含当前用户所拥有的全部对象信息外,还包含公共账户和显示授权用户的全部模式对象;n管理员视图:以DBA做前缀,包含整个数据库的所有对象信息;n检索用户在数据库所拥有模式对象信息检索用户在数据库所拥有模式对象信息 Select*FromUser_Objects;n检索用户表、视图、聚集信息检索用户表、视图
16、、聚集信息 Select*FromUser_Tab_Objects;n检索用户对象访问权限信息检索用户对象访问权限信息 Select*FromUser_Tab_Privs_Made;Oracle9i数据库管理n动态性能表n虚拟表,记录了当前数据库的活动状况和性能参数;n动态性能表的所有者为SYS用户,他们均以V$做前缀;nV$BGPROCESS列出当前所有后台进程及运行错误数。Oracle9i数据库管理nOracle数据库实例n系统全局区(SGA)时数据库信息的共享内存区;n多个Oracle进程;n每个打开的Oracle数据库有一个或多个Oracle实例支撑;nOracle实例高效地管理数据库
17、的所有数据;n为用户和应用程序访问数据库提供服务。Oracle9i数据库管理nOracle内存结构nORACLE在内存存储下列信息:n执行的程序代码;n连接的会话信息;n程序执行期间所需数据和共享的信息;n存储在外存储上的缓冲信息;nORACLE具有下列基本的内存结构:n软件代码区;n系统全局区,包括数据库缓冲存储区、日志缓冲区和共享池;n程序全局区,包括栈区和数据区;n排序区。Oracle9i数据库管理nOracle后台进程nDBWR数据库写入程序nLGWR日志写入程序nCKPT检查点nSMON系统监控nPMON进程监控nARCH归档nRECO恢复nLCKn封锁nDnnn调度进程nSnnn服
18、务器Oracle9i数据库管理nOracle数据库和实例的启动启动数据库并使它可用,有三步操作:n启动一个实例n装配数据库n打开数据库nStartupmountnAlterdatabaseopennStartupnOracle数据库和实例的关闭n关闭数据库n卸载数据库n停止实例nShutdownnormal|immediate|abortOracle9i数据库管理n初始化参数文件在启动一个实例时,ORACLE必须读入一初始化参数文件(initializationparameterfile),该参数文件是一个文本文件,包含有实例配置参数。这些参数置成特殊值,用于初始ORACLE实例的许多内存和进
19、程设置,该参数文件包含:n一个实例所启动的数据库名字n在SGA中存储结构使用多少内存;n在填满在线日志文件后作什么;n数据库控制文件的名字和位置;n在数据库中专用回滚段的名字。n修改初始化文件参数值n直接修改数据库初始化参数文件n执行altersessionset参数名=值n执行altersystemset参数名=值n执行altersystemset参数名=值deferredOracle9i数据库管理nOracle网络结构Net9i是Oracle的核心网络部件,它需要同时安装在客户机和服务器上,通过它在客户端与服务器或两个服务器之间建立网络会话。n网络服务名:数据库在客户端的逻辑表示格式为:u
20、ser/pwsdservice_namen监听器:运行在oracle服务器上的一个独立进程,负责监听客户的连接请求。Oracle9i数据库管理nOracle网络连接示意图网络服务名称解析(oraclenames,tns,dns)Net9i客户监听器Oracle服务器Oracle9i数据库管理nNet9i网络配置n在服务器端配置监听器n在客户端建立网络服务名列表n网络参数配置文件Listener.ora sqlnet.ora tnsnames.ora names.oran监听器配置nIPC协议:支持外部过程连接nTCP/IP、端口1521:支持Net8客户连接nTCP/IP、端口2481:支持I
21、IOP客户连接n监听器管理:lsnrctl 命令命令Oracle9i数据库管理nOracle本地解析配置n网络服务器存储到Tnsname.ora文件中n网络协议n地址信息n数据库服务名称n测试连接tnsping 网络服务名网络服务名Oracle9i事务管理n一个事务为工作的一个逻辑单位,由一个或多个SQL语句组成。一个事务是一个原子单位,构成事务的全部SQL语句的结果可被全部提交或者全部回滚。一个事务由第一个可执行SQL语句开始,以提交或回滚结束,可以是显式的,也可是隐式的(执行DDL语句)。n在执行一个SQL语句出现错误时,该语句所有影响被回滚,好像该语句没有被执行一样,但它不会引起当前事务
22、先前的工作的丢失。n在ORACLE中一个事务是由一个可执行的SQL语句开始n一个事务以下列任何一个出现而结束n当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。n一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。n用户撤消对ORACLE的连接(当前事务提交)n用户进程异常中止(当前事务回滚)。Oracle9i事务管理n提交事务n对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中;n在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件,这是构成提交事务的原子事务;n在行上和表上的封锁被释放;n该事务标志为完成。nC
23、ommitOracle9i事务管理n回滚事务n在回滚整个事务(没有引用保留点)时,有下列情况:n在事务中所有SQL语句作的全部修改,利用相应的回滚段被撤消;n所有数据的事务封锁被释放;n事务结束。nRollbackn当事务回滚到一保留点(具有Savepoint)时,有下列情况:n仅在该保留点之后执行的语句被撤消;n该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除;n自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持;n该事务仍可继续。nRollback To SaveOracle9i事务管理n保留点n保留点(Savepoint)是在一事务范
24、围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用保留点;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。Oracle9i方案对象管理n创建表n建立表主要指定义下列信息:n列定义n完整性约束n表所在表空间n存储特性n可选择的聚集n从一查询获得数据n语法格式:Create Table TableName(Column1 Datatype Default expression constraint,Colu
25、mn2 Datatype Default expression constraint,)Storage子句子句其他子句其他子句;Oracle9i方案对象管理n创建表CreateTableNew_Dept(DPTNONumber(2),DNAMEChar(6),LOCChar(13);n创建视图CreateViewView_NameAsQueryCreateViewEmp_ViewAsSelectEmpNo,Ename,SalFromEmpWhereSal3000;Oracle9i方案对象管理n序列n生成唯一整数的模式对象nCreate Sequence Sequence_Name Start
26、With Increment By Maxvalue|NoMaxvalue Minvalue|NoMinvaluenCreate Sequence Dept_Seq Start With 60 Increment by 2 Maxvalue 100n引用序列的Currval、NextvalInsert Into Dept Values(Nextval,BeiJing,China);Oracle9i方案对象管理n同义词n表、视图、序列或其他模式对象的别名n专用同义词:特定用户模式中使用,该用户控制专用同义词对其他用户的使用n公用同义词:对数据库的每个用户都可用n语法格式:nCREATE PUBL
27、IC SYNONYM SY_NAME FOR OBJECT;n实例:nCREATE SYNONYM CUST FOR CUSTOMERS;nCREATE PUBLIC SYNONYM SALE FOR SALESREPS;nSELECT*FROM CUST;Oracle9i方案对象管理n用户管理nCreateuseruser_nameidentifiedbypasswordnGrantpriviatetouser_name培训目录nOracle9i的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介SQL*Plus工具nSql
28、*plus是用户常用的使用程序之一n交互式SQL语句编辑、编译、执行环境nPL/SQL块编辑、编译、执行环境nSQL*PLUS命令编辑、编译、执行环境SQL*Plus工具nSQL*PLUS启动与关闭n启动:启动:Sqlplus-|-?logonfile.extsqlplusscott/tigerora817selectdept其中selectdept:select*fromdeptwheredeptno=&1;n退出:退出:Exit|quitnSQL*PLUS编辑与执行nSQL语句以(;、空行、/)结束;nPL/SQL语句块以(.)结束;n结束输入后,输入/或RUN命令执行SQL缓冲区的语句;
29、n用户所输入的内容均存储在SQL缓冲区中。SQL*Plus工具nSQL*PLUS编辑命令:L/C/A/DEL/I/CLBUFFnEDIT命令n/或RUN命令nSAVEFILENAMEREP|APPnGETFILENAMELIST|NOLISTn或STARTFILENAMEARGSQL语言基础nSQL语言简介n数据操纵语言数据操纵语言(DML):SELECT、UPDATE、INSERT、DELETEn事务处理控制语言事务处理控制语言:COMMIT、ROLLBACK、SAVEPOINTn数据定义语言数据定义语言(DDL):CREATE、ALTER、DROPn数据控制语言数据控制语言(DCL):GR
30、ANT、REVOKE、AUDIT、ALTER SYSTEM/SESSIONSQL语言基础nSELECT语句SELECT ENAME,JOB,SAL FROM EMP E WHERE EXISTS(SELECT*FROM DEPT D WHERE DEPTNO=10 AND E.DEPTNO=D.DEPTNO);列出10号部门的所有雇员SQL语言基础nINSERT语句nInsert Into Dept Values(60,SHANGHAI,CHINA);nInsert Into Table_Name(Col1,Col2)Select Col1,Col2 From Another_Table Wh
31、ere condition;nDELETE语句nDelete From Table Where;nDrop Table Table_Name;nUPDATE语句nUpdate MyTab Set Code=(Select Deptno From Emp Where Ename=SCOTT)Where Name=SERVICES;PL/SQLnPL/SQL简介n是ORACLE对标准SQL语言的扩充n增加了过程处理功能n建立和执行程序单元,过程、函数、包n是ORACLE的编程语言n基本单位是逻辑块,包括无名块、过程、函数PL/SQLn逻辑块的形式nDECLARE -说明说明(变量、常量、用户数据类
32、型变量、常量、用户数据类型)BEGIN -语句序列语句序列(SQL语句、语句、PL/SQL语句语句)EXCEPTION -例外处理程序例外处理程序(错误处理程序错误处理程序)END;nDECLARE v_name VARCHAR2(10);BEGIN SELECT ename into v_name FROM emp;EXCEPTION WHEN TOO_MANY_ROWS THEN .END;PL/SQLnPL/SQL语法约定n标示符不区分大小写n在PL/SQL块中,声明部分和异常处理部分为选项,执行部分必选,至少有一条语句n标示符长度1到30个字符n标示符的首字符必须为A-Z,a-z,后跟
33、字母、数字、$、_、#n标示符不能与PL/SQL中的表留字同名n语句之间用;分隔n注释:-单行注释,/*/块注释PL/SQLnORACLE基本数据类型nVARCHAR2变长字符串,最长为2000字符。nNUMBER数值型。nLONG变长字符数据,最长为2G字节。nDATE日期型。nRAW二进制数据,最长为255字节。nLONGRAW变长二进制数据,最长为2G字节。nROWID二六进制串,表示表的行的唯一地址。nCHAR定长字符数据,最长为255。PL/SQLn数据类型数据类型数据类型子类型子类型纯量纯量类型类型数值数值BINARY_INTEGERBINARY_INTEGERNATURAL,PO
34、SITIVE NATURAL,POSITIVE NUMBERNUMBERDEC,FLOAT,INT,DOUBLE,REALDEC,FLOAT,INT,DOUBLE,REAL字符字符CHARCHARCHARACTER,STRING CHARACTER,STRING VARCHAR2VARCHAR2VARCHARVARCHARLONGLONGLONG RAWLONG RAWRAWRAWRAWIDRAWID逻辑逻辑BOOLEANBOOLEAN日期日期DATEDATE组合组合类型类型记录记录RECORDRECORD表表TABLETABLEPL/SQLORACLEORACLE与与MS SQL SERVE
35、RMS SQL SERVER数据类型对比数据类型对比PL/SQLn常量值n数字常量:100,-10.25,2e-2n字符常量:所有可打印的字符,空格、tab、回车符,放在单引号内,区分大小写n字符串常量:有多个可打印字符组成,放在单引号内,区分大小写a,An布尔常量:true,false,null,他们不是字符串n日期常量:放在单引号内,与设定的格式一致PL/SQL用户自定义类型SUBTYPE SUB_NAME IS BASE_TYPE NOT NULLSUBTYPE SUB_NAME IS BASE_TYPE NOT NULL SUBTYPE BIRTHDAY IS DATE NOT NUL
36、L;SUBTYPE BIRTHDAY IS DATE NOT NULL;SUBTYPE NAME IS CHAR;SUBTYPE NAME IS CHAR;使用%TYPE符号以引用变量或数据列类型 USER CHAR(8);USER CHAR(8);SUBTYPE USERNAME IS USER%TYPE;SUBTYPE USERNAME IS USER%TYPE;SUBTYPE DEPTID IS DEPT.DEPTNO%TYPE;SUBTYPE DEPTID IS DEPT.DEPTNO%TYPE;用户自定义例子DECLAREDECLARE SUBTYPE DEPTID IS DEPT.
37、DEPTNO%TYPE;SUBTYPE DEPTID IS DEPT.DEPTNO%TYPE;DEPT_ID DEPTID;DEPT_ID DEPTID;BEGIN BEGIN SELECT DEPTNO INTO DEPT_ID SELECT DEPTNO INTO DEPT_ID FROM DEPT WHERE DEPTNO=10;FROM DEPT WHERE DEPTNO=10;DBMS_OUTPUT.PUT_LINE(DEPT_ID);DBMS_OUTPUT.PUT_LINE(DEPT_ID);END;END;PL/SQLn运算符n算术运算符:+,-,*,/n比较运算符:=,!=,=
38、,=,=,in,notin,any,all,betweenand,notbetweenand,exists,isnull,isnotnull,likeescape,notlikeescapen逻辑运算符:and,or,notn连接运算符:|n集合运算符:union,unionall,intersect,minusPL/SQLn变量和常量n声明变量:v_name datatype not null:=|default expressionn常量声明:c_nameconstantdatatypenotnull:=|defaultexpressionn例子:declare v_name char(8
39、);v_sal number(7,2):=0;v_gender boolean not null default true;v_pi constant number(8,7):=3.1415926;n在声明语句中,一个语句只能声明一个变量或常量:v_name,v_job char(8)此语句导致编译错误n可使用%type将已经声明的变量或数据库列类型制定给所声明的变量或常量n可使用%rowtype将表或游标的数据结构声明为一个记录变量PL/SQLn变量和常量Declare v_name char(8););v_name1 v_name%type:=USER1;V_name2 emp.ename
40、%type;v_emp1 emp%rowtype;cursor c1 is select ename,job from emp;v_emp2 c1%rowtype;使用%type声明可以进行初始化,%rowtype则不能初始化PL/SQLn变量赋值方法n声明时直接初始化:v_nit1integer:=100;n用赋值操作符::=,v_name:=abcd;n用select、fetch同时为多个变量赋值declare v_name varchar2(10);v_job varchar2(9);v_sal number(7,2);cursor c1 is select ename,job,sal
41、from emp;Begin select ename,job,sal into v_name,v_job,v_sal from emp where ename=SCOTT;dbms_output.put_line(v_name);open c1;fetch c1 into v_name,v_job,v_sal;dbms_output.put_line(v_name);PL/SQLn变量的作用域n变量的作用域重声明开始到当前块结束declare dept_rec1 dept%rowtype;cursor c1 is select deptno,dname,loc from dept;begin
42、 open c1;fetch c1 into dept_rec1;dbms_output.put_line(dept_rec1.deptno);declare 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/SQLn条件语句nIF condition THEN Sequence_of_statements;END IF;nIF condition THEN Sequence_o
43、f_statement1;ELSE Sequence_of_statement2;END IF;nIF condition1 THEN Sequence_of_statement1;ELSIF condition2 THEN Sequence_of_statement2;ELSIF condition3 THEN Sequence_of_statement3;else 语句语句 END IF;PL/SQLn条件语句例子nDeclarev_salnumber(7,2)beginselectsalintov_salfromempwhereename=SCOTT;ifv_sal100;v_s:=v_
44、s+v_I;v_I:=v_I+1;end loop;Dbms_output.put_line(v_s);End;PL/SQLnWhile_loop循环n语法:while condition loop statement end loop;n条件循环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/SQLnFor_loop循环n语法:for 循环变量循环变量 in reverse 初始值表达
45、式初始值表达式.终值表达式终值表达式 loop 语句语句 end loop;n知道循环次数的循环nReverse倒循环Declare v_s integer:=0;Begin for I in 1.100 loop v_s:=v_s+I;end loop;dbms_output.put_line(v_s);End;循环变量循环变量I不用定义不用定义.PL/SQLn创建过程n语法:CREATE OR REPLACE PROCEDURE schema.proc_name(argin|out|in out datatype,)invoke_right is|as block;nCREATE OR R
46、EPLACE PROCEDURE proC_demo(dept_no number default 10,sal_sum out number,emp_count out integer)is begin select sum(sal),count(*)into sal_sum,emp_count from emp where deptno=dept_no;End proc_demo;PL/SQLn调用过程:declarev_numinteger;v_sumnumber(8,2);beginproc_demo(30,v_sum,v_num);dbms_output.put_line(30号部门
47、工资总和:|v_sum|,人数:|v_num);End;PL/SQLn包n一组相关过程、函数、变量、常量和游标等pl/sql程序设计元素的组合n具有面向对象程序设计语言的特点n包类似于java和c+语言中的类n包中的元素分为共有元素和私有元素n包包括包头和包体两个部分,缺一不可PL/SQLn创建包头n包头只是对包内的数据类型、变量、常量、游标、子程序、异常等元素的定义声明,这些元素为公有元素n语法:create or replace package package_name authid current_user|definer is|as 公有元素的定义公有元素的定义 end package
48、_name;n创建包体n包体是对包头定义部分的具体实现,在包体重可以定义包的私有元素(类型、变量、子程序等)n语法:create or replace package body package_name is|as 私有元素定义私有元素定义 公有元素的实现公有元素的实现 begin 语句;语句;end;PL/SQLn使用包n在包头和包体创建后,在pl/sql程序中使用包n格式:包名.元素名称n参见包的具体实例PL/SQLn触发器n触发器是特殊类型的储存过程,它也储存在数据库服务器中n当指定的触发事件发生时oracle自动执行n一个触发器由三部分构成:触发事件、触发约束和触发动作nOracle支
49、持的触发事件包括:DML语句、DDL语句、数据库系统事件或用户事件n触发约束为布尔表达式,其值为TRUE,触发事件发生n触发动作为触发器要执行的PL/SQL块PL/SQLn触发器优点n可以根据需要限制用户的数据处理和创建对象操作n能够实施比FOREIGNKEY、CHECK等数据库声明完整性约束更复杂的检查和操作,从而保证数据数据库的一致性n自动产生派生列的列值n能够自动建立事件日志、同步复制数据或出版数据库数据等PL/SQLn创建触发器nDML语句触发器CREATE OR REPLACE TRIGGER schema.trigger_name BEFORE|AFTER|INSTEAD OF I
50、NSERT|DELETE|UPDATE OF COLUMN,COLUMN ON SCHEMA.TABLE_NAME|VIEW_NAMEREFERENCING OLD AS OLD|NEW AS NEWFOR EACH ROW WHEN(CONDITION)PL/SQL块块|CALL_PROCEDUREPL/SQLn创建触发器nDDL语句触发器CREATE OR REPLACE TIRGGER schema.Trigger_name BEFORE|AFTERCREATE|ALTER|DROPOR CREATE|ALTER|DROPON schema.SCHEMA|DATABASEPL/SQL块块