内置包Oracle
信息中心答案2

信息技术类习题第二部分:征收应用系统建设与维护岗位习题答案选择题:1、ORACLE创建用户的命令正确的是( B )A、CREATE USER 用户名 IDENTIFIED 口令B、CREATE USER 用户名 IDENTIFIED BY 口令C、GRANT CONNECT ,RESOURCE TO 用户 OF 口令D、GRANT DBA TO 用户 BY 口令2、ORACLE 修改用户口令正确的是 ( C )A、ALTER USER 用户名 IDENTIFIED 口令B、ALTER USER 用户名 IDENTIFIED “口令”C、GRANT CNNECT TO 用户名 IDENTIFIED BY 口令D、GRANT CNNECT TO 用户名 IDENTIFIED “口令”3、ORACLE 给普通用户授权正确的是( A)A、GRANT CONNECT ,RESOURCE TO 用户B、GRANT DBA TO 用户 BY 口令C、GRANT CONNECT ,RESOURCE TO 用户 OF 口令D、GRANT DBA TO 用户口令4、出口退税审核系统V14.00前台ORACLE连接配置正确的是( A)A、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.161)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))B、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.47)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))C、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.46)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = ckts)))D、ckts =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 71.16.16.161)(PORT = 1521)) )(CONNECT_DATA =(SERVICE_NAME = tssh)))5、创建ORACLE存储过程的语句正确的是 ( C)A、CREATE OR REPLACE PROCEDURE 存储过程名(变量名变量类型, ……)B、CREATE OR REPLACE FUNCTION 存储过程名(变量名变量类型, ……) ISC、CREATE OR REPLACE PROCEDURE 存储过程名(变量名变量类型, ……) ASD、CREATE OR REPLACE FUNCTION 存储过程名(变量名变量类型, ……)6、创建ORACLE函数的语句正确的是 ( D)A、CREATE OR REPLACE PROCEDURE 函数名(变量名变量类型, ……)B、CREATE OR REPLACE FUNCTION 函数名(变量名变量类型, ……)C、CREATE OR REPLACE PROCEDURE 函数名(变量名变量类型, ……) ASD、CREATE OR REPLACE FUNCTION 函数名(变量名变量类型, ……) IS7、定义ORACLE显示游标的语句正确的是 ( C)A、OPEN 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……B、CREATE 游标名 IS SELECT 字段名,…… INTO 表名FROM 表名 WHERE 条件……C、CREATE 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……D、LOOP 游标名 IS SELECT 字段名,…… FROM 表名 WHERE 条件……8、创建ORACLE数据库表的命令正确的是( B)A、CREATE TABLE 表名(列名数据类型,……,)B、CREATE TABLE 表名(列名数据类型,……)C、CREATE VIEW 表名(列名数据类型,……)D、CREATE VIEW 表名(列名数据类型,……,)9、创建ORACLE数据库视图的命令正确的是 ( C)A、CREATE TABLE 视图名(列名数据类型,……,)B、CREATE TABLE 视图名(列名数据类型,……)C、CREATE VIEW 视图名(列名数据类型,……)D、CREATE VIEW 视图名(列名数据类型,……,)10、截断ORACLE数据库表的命令正确的是( A )A、TRUNCATE TABLE 表名B、TRUNCATE FROM表名C、DELETE * FROM 表名D、DELETE FROM 表名11、ORAGLE数据库中SGA由(ABC)组成。
oracle的字符串类型

oracle的字符串类型Oracle的字符串类型有VARCHAR2、CHAR、CLOB和NCLOB等。
这些字符串类型在Oracle数据库中起着非常重要的作用,可以用于存储和处理各种类型的文本数据。
我们来介绍一下VARCHAR2类型。
VARCHAR2是一种可变长度的字符串类型,可以存储最多4000个字符。
它适用于存储变长的文本数据,比如用户的姓名、地址、描述等信息。
与之相对的是CHAR类型,它是一种定长的字符串类型,需要指定字符串的长度。
CHAR类型适用于存储长度固定的文本数据,比如国家代码、邮政编码等。
接下来,我们来介绍一下CLOB类型。
CLOB是一种用于存储大量文本数据的字符串类型,可以存储最多4GB的数据。
CLOB适用于存储较长的文本数据,比如文章内容、日志记录等。
与之类似的是NCLOB类型,它是用于存储Unicode字符集的大文本数据。
在Oracle中,我们可以使用字符串函数来处理字符串类型的数据。
比如,我们可以使用LENGTH函数来获取字符串的长度,使用SUBSTR函数来截取字符串的一部分,使用CONCAT函数来拼接多个字符串等。
这些字符串函数可以帮助我们对字符串数据进行各种操作和处理。
除了基本的字符串操作,Oracle还提供了一些高级的字符串处理功能。
比如,我们可以使用REGEXP_REPLACE函数来进行正则表达式替换,使用REGEXP_SUBSTR函数来进行正则表达式匹配等。
这些高级的字符串处理功能可以帮助我们更加灵活地处理字符串数据。
在实际应用中,我们经常需要对字符串进行排序和比较。
在Oracle 中,字符串的排序和比较是按照字符的ASCII码进行的。
如果我们需要按照特定的排序规则进行排序,可以使用NLS_SORT参数来指定排序规则。
另外,我们还可以使用NLS_COMP参数来指定字符串的比较规则,比如是否区分大小写、是否区分重音符号等。
除了基本的字符串操作和函数,Oracle还提供了一些用于处理字符串数据的内置包和类型。
oracle题库

ORACLE题库18,591.下列不属于ORACLE的逻辑结构的是(C)A.区B.段C.数据文件D.表空间2. 下面哪个用户不是ORACLE缺省安装后就存在的用户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3下面哪个操作会导致用户连接到ORACLE数据库,但不能创建表(A)A.授予了CONNECT的角色,但没有授予RESOURCE的角色B.没有授予用户系统管理员的角色C.数据库实例没有启动D.数据库监听没有启动4.( )函数通常用来计算累计排名,移动平均数和报表聚合。
A . 汇总B. 分析C 分组、D 单行5.带有(B)字句的SELECT语句可以在表的一行或多行放置排他锁。
A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH6.在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary用户方案中,下面哪条语句为数据库中的所有用户创建CUSTOMER表的同义词(B)。
A.CREATE PUBLIC SYNONYM cust ONmary.customer;B.CREATE PUBLIC SYNONYM cust FORmary.customer;C.CREATE SYNONYM cust ON mary.customerFOR PUBLIC;D.不能创建CUSTOMER的公用同义词。
E.7. 在Oracle中,当FETCH语句从游标获得数据时,下面叙述正确的是(C)。
A.游标打开B.游标关闭C.当前记录的数据加载到变量中D.创建变量保存当前记录的数据8. 在Oracle中,下面关于函数描述正确的是(AD)。
A.SYSDATE函数返回Oracle服务器的日期和时间B.ROUND数字函数按四舍五入原则返回指定十进制数最靠近的整数C.ADD_MONTHS日期函数返回指定两个月份天数的和D.SUBSTR函数从字符串指定的位置返回指定长度的子串9. 阅读下面的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name) VALUES(35000,'Wang','Fred');SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name) VALUES(40000,'Woo','David');SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10; SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(25000,'Lee','Bert');ROLLBACK TO SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name) VALUES(32000,'Chung','Mike');ROLLBACK TO SAVEPOINT save_b; COMMIT;END;运行上面的程序,哪两个更改永久保存到数据库(CD)。
db2与oracle差别

db2与oracle差别1:并发机制Oracle的默认隔离级是快照(Snapshot),写入事务可不能堵塞读取事务,读取事务能够猎取当前已提交值。
DB2默认是游标稳固性(Cursor Stability),写入事务会堵塞读取事务。
2: 数据类型数据库的核心是数据,类型不匹配或者语义的不同都会阻碍应用是否能够同时在两种数据库中运行。
Oracle支持一些非SQL标准的数据类型,例如VARCHAR2,这些是不被D B2支持的;另外,Oracle中的日期、时刻格式和DB2中相应类型在语义上不完全一致;最后Oracle的PL/SQL储备过程所支持的一些标量数据类型在DB2中需要被映射才能被识别。
如右:3: 隐式类型转换Oracle使用弱类型转换,而DB2使用强类型转换。
隐式类型转换能完成一种类型向另外一种类型的自动转换,关于不匹配的类型,假如数据类型能被合明白得释,比较或者赋值时能够执行隐式类型转换;强类型转换规则,意味着字符串和数字类型之间不能直截了当进行比较,除非显式转换。
4:SQL方言DB2传统上坚持对SQL标准的支持,但Oracle实现了专门多方言。
例如:CONNEC T BY 递归语句、(+)连接操作符、DUAL表、ROWNUM伪列、ROWID伪列、MINUS 操作符、SELECT INTO FOR UPDATE语句、TRUNCATE TABLE等。
假如要在DB2数据库上运行使用了上述方言的应用,就需要进行代码级别的翻译,工作量较大。
5:PL/SQL语言就储备过程和函数开发而言,DB2使用SQL PL语言来开发,Oracle使用PL/SQL 语言来开发。
SQL PL和PL/SQL差异庞大,这也是从Oracle到DB2转型最大的工作量所在。
6:内置包为了方便应用程序开发的需要,Oracle数据库提供了专门多内置包:DBMS_OUTPUT、DBMS_SQL、DBMS_ALERT、DBMS_PIPE、DBMS_JOB、DBMS_LOB、DBMS_UTI LITY、UTL_FILE、UTL_MAIL和UTL_SMTP等。
Oracle中文使用手册

1.Oracle的使用1.1. SQLPLUS的命令初始化表的位置:set NLS_LANG=american_7ascii (设置编码才可以使用下面脚本)cd $ORACLE_HOME/rdbms cd demo summit2.sql*********************************我们目前使用的是oralce 9i 9201 版本select * from v$version;恢复练习表命令:sqlplus **/** @summit2.sql //shell要在这个文件的位置。
登陆oracle的命令:sqlplus 用户名/密码show user 显示当前登陆的身份.set pause onset pause off 分页显示.oracle中默认日期和字符是左对齐,数字是右对齐table or view does not exist ; 表或示图不存在edit 命令用于自动打开vi修改刚修执行过的sql的命令。
修改方法二:l 3 先定位到行 c /旧串/新串执行出错时,利用错误号来查错误:!oerr ora 942 (装完系统后会装一个oerr工具,用于通过错误号来查看错误的具体信息)想在sql中执行unix命令时,把所有的命令前加一个!就可以,或者host( 用于从sql从切换至unix环境中去)/*** 初次使用时注意 ****运行角本时的命令:先切换到unix环境下,cd $oracle_home cd sqlplus cd demo 下面有两个角本建表语句。
@demobld.sqlsqlplus nanjing/nanjing @demobid.sql 直接运行角本,后面跟当前目录或者是绝对路径保存刚才的sql语句:save 命令第二次保存时要替换之前的角本 save 文件名 replace把刚才保的sql重新放入 buffer中spool on 开启记录spool off 关闭记录spool 文件名此命令会把所有的操作存在某个文件中去常见缩写:nls national language support 国家语言支持1.2. SQL的结构|DDL 数据库定义|DML 数据库管理SQL――Commit rollback|DCL 数据库控制|grant+revoke 权限管理表分为:系统表(数据字典),用户表注:知道数据字典可以更便于使用数据库。
Oracle笔试题库附参考答案

Oracle笔试题库附参考答案1.下列不属于ORACLE的逻辑结构的是(C)1. 区2. 段3. 数据⽂件4. 表空间2. 下⾯哪个⽤户不是ORACLE缺省安装后就存在的⽤户(A)A . SYSDBAB. SYSTEMC. SCOTTD. SYS3 下⾯哪个操作会导致⽤户连接到ORACLE数据库,但不能创建表(A)1. 授予了CONNECT的⾓⾊,但没有授予RESOURCE的⾓⾊2. 没有授予⽤户系统管理员的⾓⾊3. 数据库实例没有启动4. 数据库监听没有启动1. ( )函数通常⽤来计算累计排名,移动平均数和报表聚合。
A . 汇总B. 分析C 分组、D 单⾏1. 带有(B)字句的SELECT语句可以在表的⼀⾏或多⾏放置排他锁。
A . FOR INSERTB. FOR UPDATEC. FOR DELETED. FOR REFRESH1. 在Oracle中,你以SYSDBA登录,CUSTOMER表位于Mary⽤户⽅案中,下⾯哪条语句为数据库中的所有⽤户创建CUSTOMER表的同义词(B)。
1. CREATE PUBLIC SYNONYM cust ON mary.customer;2. CREATE PUBLIC SYNONYM cust FOR mary.customer;3. CREATE SYNONYM cust ON mary.customer FOR PUBLIC;4. 不能创建CUSTOMER的公⽤同义词。
5.7. 在Oracle中,当FETCH语句从游标获得数据时,下⾯叙述正确的是(C)。
1. 游标打开2. 游标关闭3. 当前记录的数据加载到变量中4. 创建变量保存当前记录的数据8. 在Oracle中,下⾯关于函数描述正确的是(AD)。
1. SYSDATE函数返回Oracle服务器的⽇期和时间2. ROUND数字函数按四舍五⼊原则返回指定⼗进制数最靠近的整数3. ADD_MONTHS⽇期函数返回指定两个⽉份天数的和4. SUBSTR函数从字符串指定的位置返回指定长度的⼦串9. 阅读下⾯的PL/SQL程序块:BEGININSERT INTO employee(salary,last_name,first_name)VALUES(35000,’Wang’,'Fred’);SAVEPOINT save_a;INSERT INTO employee(salary,last_name,first_name)VALUES(40000,’Woo’,'David’);SAVEPOINT save_b;DELETE FROM employee WHERE dept_no=10;SAVEPOINT save_c;INSERT INTO employee(salary,last_name,first_name)VALUES(25000,’Lee’,'Bert’);ROLLBACK TO SAVEPOINT save_c;VALUES(32000,’Chung’,'Mike’);ROLLBACK TO SAVEPOINT save_b;COMMIT;END;运⾏上⾯的程序,哪两个更改永久保存到数据库(CD)。
Oracle测试题+答案

1) PL/SQL块中可以使用下列()命令。
(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是(B)〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SAd) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是(C)〔选择一项〕a) Aptechb) 无输出c) 14行Aptechd) 编译出错4) PL/SQL块中哪几部分是可选的()〔选择二项〕a) Declareb) Beginc) Exceptiond) Constant5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。
(选择一项)a) Cycleb) Nocyclec) Cached) Nocache6) 同义词有以下()用途。
(选择三项)a) 简化SQL 语句b) 隐藏对象的名称和所有者c) 提供对对象的公共访问d) 显示对象的名称和所有者7) Oracle中用来释放锁的语句有()〔选择二项〕a) commitb) Drop lockc) rollbackd) unlock8) 关于类型定义Number(9,2)说法正确的有()〔选择一项〕a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确9) 下列哪种Lob类型用来存储数据库以外的操作系统文件()〔选择一项〕a) CLOBb) BLOBc) CFILEd) BFILE10) Oracle中的三种系统文件分别是()〔选择三项〕a) 数据文件b) 归档文件c) 日志文件d) 控制文件11) 下列哪项不是Oracle中常用的分区方法?()〔选择一项〕a) 范围分区b) 散列分区c) 列表分区d) 条件分区12) 查看Test中名称为P1的分区中的记录的查询语句为()〔选择一项〕a) Select * from Test Where PartitionName=’p1’b) Select * from Test(p1)c) Select * from Test Partition(p1);d) 以上均正确13) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值14) 下列哪项是创建索引组织表所必需的()〔选一项〕a) Primary Keyb) Order Byc) Group Byd) 以上均不是15) 若表的某字段值存在大量的重复,则基于该字段适合创建哪种索引?()〔选一项〕a) 标准索引b) 唯一索引c) 位图索引d) 分区索引16) 在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是()〔选一项〕a) A.Pi Const Real=3.14;b) B.Pi Real Const =3.14;c) C.Constant Pi Real:=3.14d) D.Pi Constant Real:=3.1417) 22.当Select语句没有返回行时,将引发下列哪个异常?()[选择一项]a) A.No_rows_foundb) B.No_data_foundc) C.No_Data_rows_foundd) D.Invalid_Number18) Oracle中提供的两种游标是()〔选择二项〕a) A.隐式游标b) B.静态游标c) C.REF游标d) D.显式游标19) 若Emp表中有14条记录,则用户执行了以下操作,结果是:()〔选择一项〕Cursor mycur is Select * From emp;。
Oracleform_builder内置函数说明.

abort_query;停止查询的执行add_group_column(record group id或name,group column添加一个列至U—个记录组,Record group idn ame,colu mn type,colu mn width;add_group_row(record group id或name,row number;添加一个行至U—个记录组,record group id是oracle赋予这个组的唯一的名称,row number指定了这个行在组中位置.add」ist_eleme nt(list n ame or list id,list index,list lable,list value;添加一项到下拉列表框,list name是list 的名字,list index 是添加到列表框的索引,list label指定了放入列表中的数值串,list value包含了列表标识所对应的数据库的数值.add_parameter(list或name,parameter,parameter type,valu添加一个参数至U—个参数列表,参数列表是一个变量列表,这些变量将被伟给其他对象,list或name指定了这个列表的标识,parameter type参数类型包含两种可用数值:text_type是一串字符;data_paramete是一个指定已在form中定义的记录组的串.value是传给被调模块的实际数值.application_parameter促使oracle 显示Enter parameter values对话框。
关联了当前菜单form的参数按其数值被显示。
backgrou nd_me nu (1...10从背景菜单中显示一个菜单项bell;促使终址产生一个鸣叫(要有音响或耳机才能听以哦!block_menu;显示一个数值的列表,它包括有效块的名字和它们的序列号break;停止form的执行,显示调试器.注:只能在调试模式时call」nput;接受并执行功能键输入;checkbox_checked( name返回一个真或假的值表示检查框的状态check_record_uniquenes被on_check_unique触发器调用时,为检查主关键字的唯一性而被始化form过程.clear_block人当前的块中清除记录.clear_eol;从光标开始到些行结束清除文本项的值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内置程序包
Oracle提供了许多内置程序包,它们用于扩展数据库的功能。
在开发应用程序时,可以利
用这些程序包。
数据库用户SYS拥有Oracle提供的所有程序包。
它们被定义为公有同义词,
并将执行权限授予了PUBLIC用户组,任何用户都可以访问它们。
Oracle提供的程序包的部分列表见表8.1。
续表
下面简单介绍几个常用的内置程序包。
8.2.1 DBMS_OUTPUT
DBMS—OUTPUT程序包允许显示PL/SQL块和子程序的输出结果,这样便于测试和调试它们。
PUT和PUT_LINE过程将信息输出到SGA中的缓冲区。
通过调用过程GET_LINE或通过 SET
SERVEROUTPUT ON,可以显示缓冲区中的信息。
默认缓冲区大小是2000字节。
最小值是2000,最大值是1,000,000。
DBMS一OUTPUT包
有以下常用过程。
ENABLE
ENABLE过程用来启用对PUT、PUT_ LINE和NEW_LINE等过程的调用,它只有一个输入参数,
即缓冲区大小(BUFFER_SIZE)。
缓冲区大小的输入值用于设置默认缓存的信息量。
调用
ENABLE将清除任何已废弃会话中缓存的数据。
DISABLE
DISABLE没有输入和输出。
DISABLE用于禁用对PUT、PUT_LINE和NEW_LINE的所有调用。
调用DISABLE过程还可清除缓冲区中的任何剩余信息。
PUT
PUT有一个输入参数,此参数被重载以接受VARCHAR2、NUMBER和DATE值。
PUT用于在缓冲
区中存储一条信息。
TO_CHAR将使用默认格式设置格式化这些项。
PUT_ LINE
PUT_ LINE有一个输入参数,此参数被重载以接受VARCHAR2、NUMBER和DATE值。
如果这些
值是要混合使用,则必须显式使用TO_CHAR函数。
PUT_LINE过程用于将一条信息存储在缓
冲区中,后接一个行结束标记。
NEW_LINE
NEW_LINE没有参数。
它用于向缓冲区中添加换行符。
换行符充当行结束标记。
对 PUT_LINE
或NEW_LINE的每次调用都将产生一行。
例13演示了DBMS_OUTPUT包的用法。
例13:
例13的输出结果如下所示。
8.2.2DBIVIS_LOB
DBMS_LOB程序包包含用于处理大型对象的过程和函数。
在Oracle中,LOB分为以下几种类
型:BLOB(二进制大对象)、CLOB(字符大对象)和BFILE(外部存储的二进制文件——
只读)。
大部分LOB操作由此程序包提供。
DBMS_ LOB包有如下的一些过程和函数。
APPEND:此过程用于将在src_lob参数中指定的BLOB或CLOB追加到在dest_lob参数中指定的BLOB或CLOB。
COPY:此过程用于从指定的偏移值开始将源BLOB或CLOB复制到目标CLOB或BLOB。
ERASE:此过程用于删除lob_loc指定的BLOB或CLOB中从指定偏移量(offset)处开始的指定量(amount)的部分。
GETLENGTH:此函数返回指定的BLOB、CLOB或BFILE的长度,并使用适合于该类型的单位。
INSTR:此函数从LOB数据中查找子串。
READ: 此过程从LOB数据中读取指定长度数据到缓冲区。
SUBSTR: 此函数从LOB数据中取子串。
WRITE: 此过程用于将指定数量的数据写入LOB。
以下是一些专门操作BFILE的过程和函数。
FILEOPEN: 此过程用于打开BFILE类型文件以进行读取。
FILEGETNAME: 此过程用于接受文件定位器值并返回文件目录别名和文件名。
FILECLOSE: 此过程用于关闭指定的BFILE。
FILEISOPEN: 此函数用于判断BFILE文件是否已打开。
DBMS_LOB程序的使用请参见第5章例4和例7。
8.2.3 DBMS_XMLQUERY
DBMS_XMLQUERY包用于将查询结果转换为XML格式。
例14演示了DBMS_XMLQUERY和DBMS_LOB包的用法。
例 14.
例14声明了一个CLOB数据类型的result变量,以及VARCHAR2类型的xmlstr和line两个变量。
其中,getXml函数用于将查询结果转换为XML格式,SUBSTR函数检索子字符串,32767值指定要从CLOB数据类型读取的最大字节数。
检索到的字符串存储在xmlstr变量中。
LOOP块循环执行,每次从xmlstr中读取一行。
INSTR函数返回一个字符串在另一个字符串中首次出现的位置。
在此,该函数返回换行符在字符串中的位置,直到遇到下一行。
8.2.4 DBMS RANDOM
DBMS_ RANDOM包可以用来生成随机数,该包的RANDOM函数返回一个8位的随机整数,该整
数的正负也是随机的。
例15所示代码产生10个l到100的随机整数。
例15:
8.2.5 UTL_FILE
UTL_FILE包用于从PL/SQL程序中读写操作系统文本文件,如XML文件。
UTL_FILE包对文
件的读写过程与编程语言(如C语言)的流操作类似,一般的过程是打开、读或写、关闭。
UTL_FILE包要求文件所在位置是基于Oracle的DIRECTORY对象指定的目录,不能直接使用
文件的绝对路径。
要使用UTL_ FILE包必须先将创建目录对象与操作系统的目录关联起来。
创建目录对象需要
有相关的权限,以SYSTEM用户执行如下命令。
例16首先创建了目录对象TEST_DIR关联到服务器上的C: DEVELOP文件夹,在使用此目录
对象之前必须保证操作系统中已存在此文件夹。
然后,将操作此目录对象的权限授予SCOTT
用户。
以SCOTT用户执行以下的命令。
例17通过UTL_FILE将DBMS_XMLQUERY包的查询结果保存到文件中。
例17:
例18演示了如何从XML文件中读取文本。
例18:
SQL> CREATE DIRECTORY TEST DIR AS 'C:\DEVELOP';
soL> GRANT READv WRITE ON DIRECTORY TEST DIR TO SCOTT;
上述代码的输出结果如下所示。
总结
触发器是当用户执行特定操作时自动执行的存储过程。
触发器由触发器语句、触发器限制和触发器操作3部分组成。
Oracle中的触发器分为行级触发器、语句级触发器、INSTEAD OF触发器、模式触发器和数据库级触发器5种类型。
INSTEAD OF触发器只能应用于视图。
内置程序包存储在数据库中,用于扩展数据库的功能。
DBMS_OUTPUT程序包允许用户从程序包、触发器和存储过程中输出信息。
DBMS_LOB程序包用于操作BLOB、CLOB和BFILE等数据类型。