oracle培训材料

上传人:dream****gning 文档编号:120784649 上传时间:2022-07-18 格式:PPTX 页数:115 大小:2.31MB
返回 下载 相关 举报
oracle培训材料_第1页
第1页 / 共115页
oracle培训材料_第2页
第2页 / 共115页
oracle培训材料_第3页
第3页 / 共115页
点击查看更多>>
资源描述
Oracle9i数据库培训2009年5月培训目录nOracle9i 数据库系统的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介Oracle9i企业版安装环境nOracle9i Enterprise Editon 环境要求n内存:1GB以上n硬盘:80G以上nCPU:P4 1.0G以上n操作系统:MS WIN2000 AS、WIN2003Oracle9i客户端安装环境nOracle9i客户端环境要求n内存:512MB以上n硬盘:30GB以上nCPU:P4 1.0G以上n操作系统:win2000/xp以上.Oracle9i安装目录结构n根目录为:x:oraclen主目录为:nOra92在主目录下包含bin、network、assistants等目录;nAdmin:数据库管理文件目录,包含以数据库命名的子目录;nOradata:数据库文件存储目录;n控制文件n数据文件n联机重做日志文件Oracle9i安装步骤1 1鼠标单击开始安装(鼠标单击开始安装(Setup.exeSetup.exe),出现下面界面),出现下面界面Oracle9i安装步骤2单击下一步,确定单击下一步,确定Oracle主目录名及安装路径。主目录名及安装路径。Oracle9i安装步骤3单击下一步,选择要安装的产品。单击下一步,选择要安装的产品。Oracle9i安装步骤4单击下一步,选择安装类型。单击下一步,选择安装类型。Oracle9i安装步骤5单击下一步,选择数据库配置。单击下一步,选择数据库配置。Oracle9i安装步骤6单击下一步,输入数据库标识,以前的单击下一步,输入数据库标识,以前的Oracle版本默认的是版本默认的是Oracl,命,命名成其他的也可以。名成其他的也可以。Oracle9i安装步骤7单击下一步,选择数据文件的存放位置。单击下一步,选择数据文件的存放位置。Oracle9i安装步骤8单击下一步,选择数据库字符集,一般中文字符集使用单击下一步,选择数据库字符集,一般中文字符集使用ZHSGBK16,若,若使用字符集不使用字符集不 当的话数据库中会出现很多当的话数据库中会出现很多“?”Oracle9i安装步骤9单击下一步,单击下一步,ORACLE会列出安装产品列表。会列出安装产品列表。Oracle9i安装步骤10单击下一步,进行单击下一步,进行ORACLE数据库的安装,在安装的过程中会弹出两数据库的安装,在安装的过程中会弹出两次对话框,要次对话框,要 求插入第二章和第三章光盘。求插入第二章和第三章光盘。Oracle9i安装步骤11单击下一步,生成数据库并进行工具配置。单击下一步,生成数据库并进行工具配置。Oracle9i安装步骤12安装成功。安装成功。Oracle9i服务名配置步骤1Net manager的配置的配置,添加服务命名添加服务命名,选择服务命名选择服务命名,点左侧点左侧“+”Oracle9i服务名配置步骤2填入服务名填入服务名Oracle9i配置步骤3确定网络协议确定网络协议,常用常用tcp/ip协议协议Oracle9i配置步骤4填写主机名填写主机名(ip或完整的计算机名或完整的计算机名),端口号端口号(与监听器一致与监听器一致)Oracle9i配置步骤5填写全局标识符填写全局标识符SIDOracle9i配置步骤6可以选择测试可以选择测试,也可直接完成也可直接完成Oracle9i配置步骤7测试界面测试界面Oracle9i监听程序配置步骤1Net manager的配置的配置,添加服务命名添加服务命名,选择监听程序选择监听程序,点左侧点左侧“+”Oracle9i监听程序配置步骤2添加地址添加地址Oracle9i监听程序配置步骤3保存设置保存设置培训目录nOracle9i 的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介建立表空间、用户、导入数据库1建立两个表空间(建立两个表空间(PEDIS40PEDIS40、SYS40_SJKSYS40_SJK)建立表空间、用户、导入数据库2点击编辑存储参数点击编辑存储参数,使数据文件已满能够自动扩展,增量为:使数据文件已满能够自动扩展,增量为:5M5M;最大为无限制最大为无限制 建立表空间、用户、导入数据库3 3建立用户(建立用户(PEDIS40PEDIS40和和SYS40_SJKSYS40_SJK)建立表空间、用户、导入数据库4 4分别授权角色为分别授权角色为DBADBA和和RESOURCERESOURCE,系统为,系统为SELECT ANY SELECT ANY TABLETABLE建立表空间、用户、导入数据库5 5导入数据库导入数据库在开始菜单中运行中输入命令:在开始菜单中运行中输入命令:Imp Imp 用户名用户名/密码密码服务名服务名 file=file=路径路径 文件名文件名 log=log=路径路径 文件文件名名 full=yfull=y如下:如下:IMP SYS40_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:SJKBAKPEDIS40LG.LOG FULL=YLOG=D:SJKBAKPEDIS40LG.LOG FULL=YOracle9i数据库卸载n停止Oracle服务;n利用Oracle卸载工具进行卸载;n在注册表中删除;nHKEY_LOCAL_MACHINESOFTWAREORACLEnKEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICESn删除C:Program FilesOracle和Oracle的安装目录;n重新启动计算机.Oracle9i数据库的备份与还原数据文件n每一个Oracle数据库有一个或多个物理的数据文件(Data File)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:n一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成;n一个数据文件仅与一个数据库联系;n一个数据文件只属于一个表空间;n可以增大数据文件大小来增加存储空间。Oracle9i数据库的备份与还原n功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份;n执行环境:可以在Sqlplus.exe或者命令行方式中执行;n查找帮助:在命令行中键入nc:imp-?nC:exp-?Oracle9i数据库的备份与还原n数据的导出 1 将数据库将数据库Test完全导出完全导出,用户名用户名system 密码密码manager 导出导出到到D:daochu.dmp exp system/managerTEST file=d:daochu.dmp full=y log=d:daochu.log 2 将数据库中将数据库中system用户与用户与sys用户的表导出用户的表导出 exp system/managerTEST file=d:daochu.dmp owner=(system,sys)Oracle9i数据库的备份与还原n数据的导出 3 将数据库中的表将数据库中的表table1、table2导出导出 exp system/managerTEST file=d:daochu.dmp tables=(table1,table2)4 将数据库中的表将数据库中的表table1中的字段中的字段filed1以以00打头的数据打头的数据导出导出 exp system/managerTEST file=d:daochu.dmp tables=(table1)query=where filed1 like 00%Oracle9i数据库的备份与还原n数据的导入 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)培训目录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 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聚集Oracle9i数据库管理nOracle数据字典n表和视图构成;n存储oracle系统的活动信息以及所有用户数据库的定义信息;n分为静态数据字典和动态性能表。Oracle9i数据库管理n静态数据字典n用户视图:以USER做前缀,包含当前用户所拥有的全部对象信息;n扩展用户视图:以ALL做前缀,它除了包含当前用户所拥有的全部对象信息外,还包含公共账户和显示授权用户的全部模式对象;n管理员视图:以DBA做前缀,包含整个数据库的所有对象信息;n检索用户在数据库所拥有模式对象信息检索用户在数据库所拥有模式对象信息 Select*From User_Objects;n检索用户表、视图、聚集信息检索用户表、视图、聚集信息 Select*From User_Tab_Objects;n检索用户对象访问权限信息检索用户对象访问权限信息 Select*From User_Tab_Privs_Made;Oracle9i数据库管理n动态性能表n虚拟表,记录了当前数据库的活动状况和性能参数;n动态性能表的所有者为SYS用户,他们均以V$做前缀;nV$BGPROCESS列出当前所有后台进程及运行错误数。Oracle9i数据库管理nOracle数据库实例n系统全局区(SGA)时数据库信息的共享内存区;n多个Oracle进程;n每个打开的Oracle数据库有一个或多个Oracle实例支撑;nOracle实例高效地管理数据库的所有数据;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 服务器 Oracle9i数据库管理nOracle数据库和实例的启动 启动数据库并使它可用,有三步操作:n启动一个实例n装配数据库 n打开数据库nStartup mountnAlter database opennStartup nOracle数据库和实例的关闭 n关闭数据库n卸载数据库n停止实例nShutdown normal|immediate|abortOracle9i数据库管理n初始化参数文件在启动一个实例时,ORACLE必须读入一初始化参数文件(initialization parameter file),该参数文件是一个文本文件,包含有实例配置参数。这些参数置成特殊值,用于初始ORACLE实例的许多内存和进程设置,该参数文件包含:n一个实例所启动的数据库名字n在SGA中存储结构使用多少内存;n在填满在线日志文件后作什么;n数据库控制文件的名字和位置;n在数据库中专用回滚段的名字。n修改初始化文件参数值n直接修改数据库初始化参数文件n执行alter session set 参数名=值n执行alter system set 参数名=值n执行alter system set 参数名=值 deferredOracle9i数据库管理nOracle网络结构Net9i是Oracle的核心网络部件,它需要同时安装在客户机和服务器上,通过它在客户端与服务器或两个服务器之间建立网络会话。n网络服务名:数据库在客户端的逻辑表示格式为:user/pwsdservice_namen监听器:运行在oracle服务器上的一个独立进程,负责监听客户的连接请求。Oracle9i数据库管理nOracle网络连接示意图网络服务名称解析(oracle names,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:支持IIOP客户连接n监听器管理:lsnrctl 命令命令Oracle9i数据库管理nOracle本地解析配置n网络服务器存储到Tnsname.ora文件中n网络协议n地址信息n数据库服务名称n测试连接 tnsping 网络服务名网络服务名Oracle9i 事务管理n一个事务为工作的一个逻辑单位,由一个或多个SQL语句组成。一个事务是一个原子单位,构成事务的全部SQL语句的结果可被全部提交或者全部回滚。一个事务由第一个可执行SQL语句开始,以提交或回滚结束,可以是显式的,也可是隐式的(执行DDL语句)。n在执行一个SQL语句出现错误时,该语句所有影响被回滚,好像该语句没有被执行一样,但它不会引起当前事务先前的工作的丢失。n在ORACLE中一个事务是由一个可执行的SQL语句开始 n一个事务以下列任何一个出现而结束n 当COMMIT或ROLLBACK(没有SAVEPOINT子句)语句发出。n 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交。n用户撤消对ORACLE的连接(当前事务提交)n用户进程异常中止(当前事务回滚)。Oracle9i 事务管理n提交事务n对于与回滚段相关的内部事务表记录提交事务,并赋给一个相应的唯一系统修改号(SCN),记录在表中;n在SGA的日志缓冲区中日志项由LGWR进程写入到在线日志文件,这是构成提交事务的原子事务;n在行上和表上的封锁被释放;n该事务标志为完成。nCommitOracle9i 事务管理n回滚事务n在回滚整个事务(没有引用保留点)时,有下列情况:n在事务中所有SQL语句作的全部修改,利用相应的回滚段被撤消;n所有数据的事务封锁被释放;n事务结束。nRollbackn当事务回滚到一保留点(具有Savepoint)时,有下列情况:n仅在该保留点之后执行的语句被撤消;n该指定的保留点仍然被保留,该保留点之后所建立的保留点被删除;n自该保留点之后所获取的全部表封锁和行封锁被释放,但指定的保留点以前所获取的全部数据封锁继续保持;n该事务仍可继续。nRollback To Save Oracle9i 事务管理n保留点n保留点(Savepoint)是在一事务范围内的中间标志,经常用于将一个长的事务划分为小的部分。保留点可标志长事务中的任何点,允许可回滚该点之后的工作。在应用程序中经常使用保留点;例如一过程包含几个函数,在每个函数前可建立一个保留点,如果函数失败,很容易返回到每一个函数开始的情况。在回滚到一个保留点之后,该保持点之后所获得的数据封锁被释放。Oracle9i 方案对象管理n创建表n建立表主要指定义下列信息:n列定义n完整性约束n表所在表空间n存储特性n可选择的聚集n从一查询获得数据n语法格式:Create Table TableName(Column1 Datatype Default expression constraint,Column2 Datatype Default expression constraint,)Storage子句子句其他子句其他子句;Oracle9i 方案对象管理n创建表Create Table New_Dept(DPTNO Number(2),DNAME Char(6),LOC Char(13);n创建视图Create View View_Name As QueryCreate View Emp_View As Select EmpNo,Ename,SalFrom EmpWhere Sal3000;Oracle9i 方案对象管理n序列n生成唯一整数的模式对象nCreate Sequence Sequence_Name Start With Increment By Maxvalue|NoMaxvalue Minvalue|NoMinvaluenCreate Sequence Dept_Seq Start With 60 Increment by 2 Maxvalue 100n引用序列的Currval、Nextval Insert Into Dept Values(Nextval,BeiJing,China);Oracle9i 方案对象管理n同义词n表、视图、序列或其他模式对象的别名n专用同义词:特定用户模式中使用,该用户控制专用同义词对其他用户的使用n公用同义词:对数据库的每个用户都可用n语法格式:nCREATE PUBLIC SYNONYM SY_NAME FOR OBJECT;n实例:nCREATE SYNONYM CUST FOR CUSTOMERS;nCREATE PUBLIC SYNONYM SALE FOR SALESREPS;nSELECT*FROM CUST;Oracle9i 方案对象管理n用户管理nCreate user user_name identified by password nGrant priviate to user_name 培训目录nOracle9i 的安装、配置n用户数据库的建立和基本维护nOracle9i数据库管理基本知识nSql*plus工具和PL/SQL语言简介SQL*Plus工具nSql*plus是用户常用的使用程序之一n交互式SQL语句编辑、编译、执行环境nPL/SQL块编辑、编译、执行环境nSQL*PLUS命令编辑、编译、执行环境SQL*Plus工具nSQL*PLUS启动与关闭n启动:启动:Sqlplus-|-?logonfile.ext sqlplus scott/tigerora817 selectdept 其中selectdept:select*from dept where deptno=&1;n退出:退出:Exit|quitnSQL*PLUS编辑与执行nSQL语句以(;、空行、/)结束;nPL/SQL语句块以(.)结束;n结束输入后,输入/或RUN命令执行SQL缓冲区的语句;n用户所输入的内容均存储在SQL缓冲区中。SQL*Plus工具nSQL*PLUS编辑命令:L/C/A/DEL/I/CL BUFFnEDIT命令n/或RUN命令nSAVE FILENAME REP|APPnGET FILENAME LIST|NOLISTn或START FILENAME ARGSQL语言基础nSQL语言简介 n数据操纵语言数据操纵语言(DML):SELECT、UPDATE、INSERT、DELETEn事务处理控制语言事务处理控制语言:COMMIT、ROLLBACK、SAVEPOINTn数据定义语言数据定义语言(DDL):CREATE、ALTER、DROPn数据控制语言数据控制语言(DCL):GRANT、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 Where 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 -说明说明(变量、常量、用户数据类型变量、常量、用户数据类型)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,后跟字母、数字、$、_、#n标示符不能与PL/SQL中的表留字同名n语句之间用;分隔n注释:-单行注释,/*/块注释PL/SQLnORACLE基本数据类型 nVARCHAR2 变长字符串,最长为2000字符。nNUMBER 数值型。nLONG 变长字符数据,最长为2G字节。nDATE 日期型。nRAW 二进制数据,最长为255字节。nLONG RAW 变长二进制数据,最长为2G字节。nROWID 二六进制串,表示表的行的唯一地址。nCHAR 定长字符数据,最长为255。PL/SQLn数据类型数据类型数据类型子类型子类型纯量纯量类型类型数值数值BINARY_INTEGERBINARY_INTEGERNATURAL,POSITIVE 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 SERVERMS 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 NULL;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.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比较运算符:=,!=,=,=,=,in,not in,any,all,between and,not between and,exists,is null,is not null,like escape,not like escapen逻辑运算符:and,or,notn连接运算符:|n集合运算符:union,union all,intersect,minusPL/SQLn变量和常量n声明变量:v_name datatype not null:=|default expressionn常量声明:c_name constant datatype not null:=|default expressionn例子: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;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%type;v_emp1 emp%rowtype;cursor c1 is select ename,job from emp;v_emp2 c1%rowtype;使用%type声明可以进行初始化,%rowtype则不能初始化PL/SQLn变量赋值方法n声明时直接初始化:v_nit1 integer:=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 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 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_of_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条件语句例子nDeclare v_sal number(7,2)begin select sal into v_sal from emp where ename=SCOTT;if v_sal100;v_s:=v_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 初始值表达式初始值表达式.终值表达式终值表达式 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 REPLACE 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调用过程: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/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_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支持的触发事件包括:DML语句、DDL语句、数据库系统事件或用户事件n触发约束为布尔表达式,其值为TRUE,触发事件发生n触发动作为触发器要执行的PL/SQL块PL/SQLn触发器优点n可以根据需要限制用户的数据处理和创建对象操作n能够实施比FOREIGN KEY、CHECK等数据库声明完整性约束更复杂的检查和操作,从而保证数据数据库的一致性n自动产生派生列的列值n能够自动建立事件日志、同步复制数据或出版数据库数据等PL/SQLn创建触发器nDML语句触发器 CREATE OR REPLACE TRIGGER schema.trigger_name BEFORE|AFTER|INSTEAD OF INSERT|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块块|CALL_PROCEDUREPL/SQLn创建触发器n系统或用户触发器CREATE OR REPLACE TRIGGER schema.Trigger_name BEFORE|AFTERSTARTUP|SHUTDOWN|SERVERERROR|LOGON|LOGOFF|ON schema.SCHEMA|DATABASEPL/SQL块块|CALL_PROCEDUREPL/SQLn创建触发器说明nBEFORE和AFTER指触发器的触发时序nINSTEAD OF选项是ORACLE激活触发器,而不再执行触发事件。只能对视图和对象视图建立INSTEAD OF触发器n在DML语句触发器中,可使用INSERT、DELETE和UPDATE的组合表示,用OR分隔n当建立UPDATE触发器时,可用OF进一步限制表中哪些类修改时才激活触发器nFOR EACH ROW选项说明触发器为行触发器nREFERENCEING子句说明相关名称,在行触发器的PL/SQL块和WHEN子句中可以使用相关名称参照当前行的新、旧劣值,PL/SQL块中应用相关名称时,必须在前面加冒号(:),但在WHEN子句中不加冒号(:)nDDL语句触发器中,CREATE、ALTER和DROP分别说明触发器在制定模式(用SCHEMA选项)或数据库(用DATABASE选项)中创建、修改、删除数据库对象时激活的触发器PL/SQLn创建触发器说明nDDL语句触发器支持的数据库对象包括:表空间、聚集、表、视图、索引、序列、同义词、拥护、过程、函数、包等nPL/SQL块时触发器的语句体,是触发器要执行的操作n在PL/SQL块中不能包含COMMIT,ROLLBACK,SAVEPOINT和SET CONSTRAINT 事务控制语句nCALL_PROCEDURE调用存储过程语句,格式:CALL 模式.类型.包.过程 数据库链路(参数1,参数2);n参见创建触发器实例n启用和禁用触发器:ALTER TRIGGERschema.trigger_name ENABLE|DISABLE;n检索触发器信息:利用数据字典USER_TRIGGERS,ALL_TRIGGERS,DBA_TRIGGERSn删除触发器:DROP TRIGGER trig_namePL/SQLn游标n指向sql内存区的指针n为应用程序提供了一种对查询结果集的数据行进行单独处理的方法nPl/sql游标分为显示游标和隐式游标n在每个用户会话中,可以同时打开多个游标PL/SQLn游标操作n声明游标n打开游标n提取和处理游标n关闭游标PL/SQLn声明游标nCURSOR cursor_name parameter,parameter)RETURN return_type IS select_statement;其中:其中:parameter_name in datatype :=|default expression在指定数据类型时,不能使用长度约束在指定数据类型时,不能使用长度约束nCursor c1 is select dname,loc from dept where deptno=30;nCursor c2(dept_no number default 10)is select dname,loc from dept where deptno=dept_no;nCursor c3(dept_no number default 10)return dept%rowtype is select*from dept where deptno value,parameter=value);例子:open c1;open c2(30);open c3(dept_no=20);n提取游标数据Fetch cursor_name into variable_list|record_variable;n关闭游标 close cursor_name;PL/SQLn游标FOR循环n为了简化游标操作的程序代码n实现了OPEN、FECTH、CLOSE语句和循环语句的功能n自动判断是否结束游标n语法:FOR 游标循环变量 IN 游标名 LOOP -游标数据处理代码 END LOOP;n参见具体实例PL/SQLn游标属性n%isopen 说明游标是否打开n%found 判断最近一次游标fetch操作是否成功n%notfound判断最近一次游标fetch操作是否不成功n%rowcount 返回最近一次提取到的数据行的行序号n参见具体实例PL/SQLn游标的修改与删除n游标修改和删除操作指在游标定位下,修改或删除标中指定的数据行n要求使用FOR UPDATE选项n语法:select fromfor update of column,column nowaitn在update和delete语句中使用where current of 子句,修改和删除游标当前行对应的表中的数据行,where 子句的格式:where current of cursor_namePL/SQLn实例Declare deptrec dept%rowtype;cursor c1 is select*form dept for update;Begin open c1;Loop fetch c1 into deptrec;exit when c1%notfound;if deptrec.deptno40 then update dept set deptno=deptno+1 where current of c1;end if;end loop;commit;close c1;end;PL/SQLn游标变量n游标变量是动态,而游标是静态的n是一个动态指针,可以指向不同的查询语句的内存区,只要这些查询语句的返回类型兼容即可,而游标是一个静态指针,固定地指向一个查询内存区n游标与游标变量的关系类似于变量与常量的关系PL/SQLn游标变量n声明游标变量类型:TYPE ref_type_name IS REF CURSOR RETURN return_type;n在定义中必须指定游标变量返回值类型为强类型,反之为弱类型n强类型只允许使用类型兼容的查询语句,弱类型可与所有的查询语句相连,但容易出错n不能在包中声明游标变量n可以在包中定义游标变量参照类型n可以向包中的子程序传递游标变量参数PL/SQLn游标变量Declare type deptrecord is record (deptno dept.deptno%type,dname dept.dname%type,loc dept.loc%type);type deptcurtype is ref cursor return dept%rowtype;type deptcurtyp1 is ref cursor return deptrecordType curtype is ref cursor;PL/SQLn游标变量n打开游标变量:open 游标变量 for select_statement;n提取游标变量数据 fetch 游标变量 into var1,var2|var_recard;n关闭游标变量 close 游标变量;n参见完整实例培训结束谢谢谢谢!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 销售管理


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!