DECLARE
counter number:=0; BEGIN
FOR i IN 1..9 LOOP FOR j IN 0..9 LOOP IF i!=j THEN
FOR k IN 0..9 LOOP IF k!=i and k!=j counter:=counter+1; END IF; END LOOP; END IF; END LOOP; END LOOP;
DBMS_OUTPUT.put_line(counter); END; 第八章
1.在下面程序的空白处填写一定的代码,使该函数可以获取指定编号的商品价格。 CREATE OR REPLACE FUNCTION get_price (P_ID varchar2) return number is IS
v_price NUMBER; BEGIN
SELECT 单价 into v_price FROM 商品信息 WHERE 商品编号=P_ID; RETURN v_price;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('查找的商品不存在!'); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE(' 程序运行错误!请使用游标'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('发生其他错误!'); END get_price;
2.假设有一个程序包,其中包含了两个重载的函数max。写出下面程序调用max函数后的运行结果。 程序包主体:
Create or replace package body TEST is
Function max(x in number,y in number) return number is Result number; Begin If x>y then Result:=x; Else Result:=y; End if; Return (result)' End max;
Function max(x in number,y in number,z in number) return number is result number; Begin
Result:=test.max(x,y); Result:=test.max(result,z); Return(result); End max; End;
运行结果: 21
3.在下面程序的空白处填写适当的代码,使得调用该过程时可以统计某产地的商品数量和总价。
CREATE OR REPLACE PROCEDURE proc_demo(
Merch_place IN varchar2, Price_sum out NUMBER, Merch_count out NUMBER) IS BEGIN
SELECT SUM(单价),COUNT(*) INTO Price_sum,Merch_count FROM 商品信息 WHERE 产地=Merch_place; EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('所需数据不存在!'); WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生其他错误!'); END proc_demo; 第九章
1.为了建立外部表,首先需要指示数据文件在操作系统上的位置。现在假设在操作系统的F:\\DATAFILE文件夹中存有一个数据文件,使用create directory exterior_data as 'F:\\DATAFILE';语句使Oracle可以访问数据文件。 2.在使用CREATE TABLE 语句创建索引组织表时,必须使用organization index子句指示创建的表为索引组织表,并且为索引组织表指定主键。
3.PCTTHRESHOLD指定一个数据块的百分比,当一行中的数据占用空间大于这个百分比时,该行将被分隔到两个位置存储:主键列被存储在基本索引段中,所有其他列被存储在溢出段中。
4.Oracle中的临时表可以分为事务级临时表和会话级临时表,创建事务级别的临时表,需要使用on commit delete rows子句;创建一个会话级别的临时表,则需要使用on commit preserver rows子句。
5.在创建对象类型时,用户不必特意创建构造函数,它由系统隐式创建,名称与对象类型的名称相同,并且它会接收对象类型的所有属性作为它的参数。
6.如果用户想要对对象类型的实例进行比较排序,则需要使用映射方法Map,它最重要的一个特点是:当在WHERE或ORDER BY 等比较关系子句中使用对象时会被间接地使用。
7.有两种方法向对象表添加数据:一种是像关系表一样在INSERT的VALUES子句中,为对象的每个属性提供值,
隐式地创建对象类型实例,向对象表添加数据;另一种方式是显式地创建对象实例,然后再将它添加到对象表。 8.Oracle数据库提供对表或索引的分区方法有5种:范围分区、散列分区、列表分区、组合范围散列分区和组合范围列表分区。
9.簇是一种用于存储数据表中数据的方法。簇实际是一组表,由一组共享相同数据块的多个表组成。 第十章
1.B树索引可以是唯一的或者不唯一的,唯一的B树索引可以保证索引列上不会有重复的值。 2.在为表中某个列定义PRIMART KEY约束PK_ID后,则系统默认创建的索引名为PK_ID。 3.在B树索引中,通过在索引中保存排过序的索引列的值与相对应的RowID来实现快速查找。 4.如果表中某列的基数比较低,则应该在该列上创建位图索引。
5.如果要获知索引的使用情况,可以通过查询V$OBJECT_USAGE视图;而要获知索引的当前状态,可以查询Index_Stats视图。
第十一章
1.在不为视图指定列名的情况下,视图列的名称将使用表列的名称。
2.视图与数据库中的表非常相似,用户也可以在视图进行INSERT、UPDATE、和DELETE操作。通过视图修改数据时,实际上是在修改基本表中的数据;相应地,改变基本表中的数据也会反映到该表产生的视图中。 3.视图是否可以更新,这取决于定义视图的SELECT语句,通常情况下,该语句越复杂,创建的视图可以更新的可能性也就越小。
4.下面的语句创建了一个序列对象,该序列对象的开始数为2,每次递增2,当大于1000后,序列值重新返回到2.在空白处填写适当的代码,完成上述要求。 Create sequence seg_test Start with 2 Increment by 2 Maxvalue 1000 Cycle; 第十二章
1.假设有一个表TEST,它仅包含一个字段DATA。现在创建一个触发器,实现将添加的数据变大写。在下面的空白处填写适当的语句,使之可以正常运行。
相关推荐: