SELECT SID,SNAME,SADDRESS FROM STUDENT
WHERE SCLASS='C0010545' OR SCLASS IN( SELECT CID FROM CLASS WHERE DEPARTMENT IN(
SELECT DID FROM DEPARTMENT WHERE DNAME='化工系'));
A.SELECT SID,SNAME,SADDRESS FROM STUDENT WHERE SCLASS='C0010545' INTERSECT
SELECT SID,SNAME,SADDRESS FROM STUDENT S,CLASS C WHERE S.SCLASS=C.CID AND C.DEPARTMENT IN
(SELECT DID FROM DEPARTMENT WHERE DNAME='化工系');
B.SELECT SID,SNAME,SADDRESS FROM STUDENT WHERE SCLASS='C0010545' UNION
SELECT SID,SNAME,SADDRESS FROM STUDENT S,CLASS C WHERE S.SCLASS=C.CID AND C.DEPARTMENT IN
(SELECT DID FROM DEPARTMENT WHERE DNAME='化工系'); C.SELECT * FROM STUDENT WHERE SCLASS='C0010545' UNION
SELECT * FROM STUDENT S,CLASS C
WHERE S.SCLASS=C.CID AND C.DEPARTMENT IN
(SELECT DID FROM DEPARTMENT WHERE DNAME='化工系');
D.SELECT SID,SNAME,SADDRESS FROM STUDENT WHERE SCLASS='C0010545' MINUS
SELECT SID,SNAME,SADDRESS FROM STUDENT S,CLASS C WHERE S.SCLASS=C.CID AND C.DEPARTMENT IN
(SELECT DID FROM DEPARTMENT WHERE DNAME='化工系');
第七章
1.PL/SQL 程序块主要包含3 个主要部分:声明部分、可执行部分和异常处理部分。 2.使用显式游标主要有4 个步骤:声明游标、打开游标、检索数据、关闭游标。 3.在PL/SQL 中, 如果SELECT 语句没有返回列, 则会引发ORACLE 错误, 并引发 no_data_found异常。
4.自定义异常必须使用raise语句引发。
5.查看操作在数据表中所影响的行数,可通过游标的%RowCount属性实现。 6.查看下面的程序块,DBMS_OUTPUT 将显示什么结果? N DECLARE
var_a CHAR(1):='N'; BEGIN DECLARE var_a CHAR(2); BEGIN var_a:='Y'; END;
DBMS_OUTPUT.put_line(var_a); END;
7.查看下面的程序块,其中变量var_b 的结果为5 。
DECLARE
Var_a number:=1200; Var_b number; BEGIN
IF var_a>500 THEN var_b:=5;
ELSIF var_a>1000 THEN var_b:=10; ELSE var_b:=8; END IF; END;
8.下列程序计算由0~9 之间的任意3 个不相同的数字组成的三位数,共有多少种不同的组合方式?完成下列程序使其能够正确运行。 DECLARE
counter number:=0; BEGIN
FOR i IN 1..9 LOOP FOR j IN 0..9 LOOP
IF i!=j THEN i<>j FOR k IN 0..9 LOOP
IF k!=i and k!=j 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.以下定义的哪个变量是非法的? B
A.var_ab NUMBER(3); B.var_ab NUMBER(3) NOT NULL:='0'; C.var_ab NUMBER(3) DEFAULT:=1; D.var_ab NUMBER(3):=3; 2.下列哪一个不是BOOLEAN 变量可能的取值? D A.TRUE B.FALSE C.NULL D.BLANK
3.只能存储一个值的变量是哪种变量? B A.游标B.标题变量C.游标变量D.记录变量
4.声明%TYPE 类型的变量时,服务器将会做什么操作? A A.为该变量检索数据库列的数据类型B.复制一个变量 C.检索数据库中的数据D.为该变量检索列的数据类型和值 5.下列哪一项可以正确地引用记录变量中的一个值? B
A.rec_abc(1); B.rec_abc(1).col; C.rec_abc.col; D.rec_abc.first(); 6. 下列哪个语句允许检查UPDATE 语句所影响的行数? B A.SQL%FOUND B.SQL%ROWCOUNT C.SQL%COUNTD D.SQL%NOTFOUND
7.在定义游标时使用的FOR UPDATE 子句的作用是B
A.执行游标B.执行SQL 语句的UPDATE 语句C.对要更新表的列进行加锁D.都不对 8.对于游标FOR 循环,以下哪一种说法是不正确的? D
A.循环隐含使用FETCH 获取数据B.循环隐含使用OPEN 打开记录集 C.终止循环操作也就关闭了游标D.游标FOR 循环不需要定义游标 9.下列哪个关键字用来在IF 语句中检查多个条件? B\\C A.ELSE IF B.ELSIF C.ELSIF D.ELSIFS
10.如何终止LOOP 循环,而不会出现死循环? C
A.在LOOP 语句中的条件为FALSE 时停止B.这种循环限定的循环次数,它会自动终止循环C.EXIT WHEN 语句中的条件为TRUE D.EXIT WHEN 语句中的条件为FALSE 11.下列哪一项可以正确引用记录表变量中的一个值? B
A.tab_abc(1); B.tab_abc(1).col C.tab_abc.col; D.tab_abc.first();
12.如果PL/SQL 程序块的可执行部分引发了一个错误,则程序的执行顺序将发生什么变化?
A
A.程序将转到EXCEPTION 部分运行B.程序将中止运行C.程序仍然正常运行D.以上都不对 第八章
1.在下面程序的空白处填写一定的代码,使该函数可以获取指定编号的商品价格。 CREATE OR REPLACE FUNCTION get_price (P_ID varchar2) return number 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.下列哪个语句可以在SQL*Plus 中直接调用一个过程? D A.RETURN B.CALL C.SET D.EXEC
2.下面哪些不是过程中参数的有效模式? C
A.IN B.IN OUT C.OUT IN D.OUT
3.如果存在一个名为TEST 的过程,它包含3 个参数:第一个参数为P_NUM1,第二个参数为P_NUM2,第三个参数为P_NUM3。3 个参数的模式都是IN。P_NUM1 参数的数据类型 是NUMBER , P_NUM2 参数的数据类型是VARCHAR2 , 第三个参数的数据类型是 VARCHAR2。下列哪一个是该过程的有效调用? D A. TEST(1010,P_NUM3=>'abc',P_NUM2=>'bcd') B.TEST(P_NUM1=>1010,P_NUM2=>''abc','bcd') C.TEST(P_NUM1=>1010,'abc','bcd') D.上述都对
4.函数头部中的RETURN 语句的作用是什么? A
A.声明返回的数据类型B.声明返回值的大小和数据类型 C.调用函数D.函数头部不能使用RETURN 语句
5.根据下面的匿名程序块,判断CHECK_VALUE 程序单元是否为一个函数? D DECLARE V_TEST NUMBER;
BEGIN IF V_TEST > 10 THEN CHECK_VALUE(V_TEST); END IF; END;
A. 可以为一个函数B.可以,但函数必须不包含任何SQL 语句 C.可以,但需要初始化变量V_TEST D.不可以
6.如果在程序包的主体中包括了一个过程,但没有在程序包规范中声明这个过程,那么它将 会被认为是D 。
A.非法的B.公有的C.受限的D.私有的
7.如果创建了一个名为USERPKG 的程序包,并在程序包中包含了名为test 的过程。下列哪一个是对这个过程的合法调用? B
A.test(10) B.USERPKG.test(10) C.TEST.USERPKG(10) D.TEST(10).USERPKG 8.可以引用哪个数据字典视图来查看软件包中包含的代码? C A.USER_OBJECTS B.USER_PACKAGE_TEXT C.USER_SOURCE D.USER_TEXT 9.对于下面的函数,哪个语句将成功地调用? D
CREATE OR REPLACE FUNCTION Calc_Sum(Addend_X number,Addend_Y number) Return number As Sum number;
BEGIN Sum :=Addend_X+Addend_Y; Return Sum; END;
A.Calc_Sum B.EXECUTE Calc_Sum(45)
C.EXECUTE Calc_Sum(23,12) D.Sum:=Calc_Sum(23,12)
10.当满足下列哪种条件时,允许两个过程具有相同的名称? B A.参数的名称或数量不相同时B.参数的数量或数据类型不相同时 C.参数的数据类型和名称不相同时C.参数的数量和数据类型不相同时 第九章
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 子句中,为对象的每个属性提供值,隐式地创建对象类型实例,向对象表添加数据;另一种方式是显式地