oracle 第四章PLSQL习题及答案

合集下载

Oracle PLSQL考试题

Oracle PLSQL考试题

Oracle SQL & PL/SQL 测试题1.Oracle发出下列select语句:SQL> select e.empno, e.ename, d.loc2 from emp e, dept d3 where e.deptno = d.deptno4 and substr(e.ename, 1, 1) = ‘S’;下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句?AA.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’;B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno wheresubstr(emp.ename, 1, 1) = ‘S’;C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’;D.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’;2.你要对操纵Oracle数据库中的数据。

下列哪个选项表示Oracle中select语句的功能,并且不需要使用子查询?BA.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断3.Oracle数据库中发出一个查询。

PLSQL连接Oracle数据库问题及详解

PLSQL连接Oracle数据库问题及详解

PLSQL连接Oracle数据库问题及详解三、PLSQL安装或使⽤免安装版本。

四、PLSQL连接Oracle问题汇总: PLSQL Developer 连接 64位Oracle 数据库需要找到两个东东: 1、32位的 oci.dll ⽂件 因为PLSQL Developer 为32位软件,故在访问 Oracle 11g 64位数据库时,需⾸先经过32位的oci.dll这个中间⼈再与64位oracle 数据库通信。

故在PLSQL Developer访问 64位oracle 数据库时,必须要能能找到 32位的 oci.dll⽂件位置。

32位 oci.dll的获取有两种⽅式,⼀是再安装⼀个32位Oracle 11g 客户端;⼆是直接从⽹络下载⼀个包含32位 oci.dll 的简易安装包。

所以如果你安装64位的客户端,⽤plsql是连接不上数据库的。

就是说如果你安装的是64位Oracle,则如果⽤plsql必须安装⼀个32位的oracle客户端。

2、ORACLE_HOME ⽬录(即 Oracle主⽬录) 找 ORACLE_HOME 是为了找到 tnsnames.ora .tnsnames.ora存储数据库连接信息。

tnsnames.ora可通过”Net Configuration Assistant”配置,或直接从别的计算机上复制⼀个该⽂件放置到 Oracle客户端主⽬录\network\admin 中即可。

(client安装完成之后会在注册表中写⼊⾃⼰的ORACLE_HOME地址,所以plsql会根据此地址找到tnsnames.ora) ORACLE_HOME主⽬录可以在操作系统中的环境变量中配置(尽量不要采⽤此办法)。

解决⽅法多种多样,但要实现的⽬标也就上⾯两个。

五、环境变量配置:(正常安装情况下请不要主动配置操作系统的环境变量,后期安装client之后容易出问题,因为oracle和oracle client都会有⾃⼰的ORACLE_HOME环境变量,这些变量在注册表中是已经存在的,如果再在操作系统中添加系统环境变量,容易引起混乱,从⽽导致oracle 监听服务⽆法启动等问题)NLS_LANGAMERICAN_AMERICA.AL32UTF8或 SIMPLIFIED CHINESE_CHINA.ZHS16GBK六、PLSQL设置⼋、PLSQL连接相关问题 1、打开PLSQL,输⼊⽤户名密码连接报错:ORA-12638: Credential retrieval failed 解决办法:修改sqlnet.ora⽂件,将 SQLNET.AUTHENTICATION_SERVICES= (NTS) 改为SQLNET.AUTHENTICATION_SERVICES= (NONE) 如果出现不让保存的权限问题,请把sqlnet.ora⽂件拷贝到桌⾯,修改之后再把原来的⽂件删除,把桌⾯⽂件拷贝进去就⾏了。

Oracle---PL-SQL经典练习题

Oracle---PL-SQL经典练习题

(完整word版)Oracle---PL-SQL经典练习题亲爱的读者:本文内容由我和我的同事精心收集整理后编辑发布到文库,发布之前我们对文中内容进行详细的校对,但难免会有错误的地方,如果有错误的地方请您评论区留言,我们予以纠正,如果本文档对您有帮助,请您下载收藏以便随时调用。

下面是本文详细内容。

最后最您生活愉快 ~O(∩_∩)O ~Oracle 作业题一.创建一个简单的PL/SQL程序块使用不同的程序块组件工作使用编程结构编写PL/SQL程序块处理PL/SQL程序块中的错误1.编写一个程序块,从emp表中显示名为“SMITH”的雇员的薪水和职位。

declarev_emp emp%rowtype;beginselect * into v_emp from emp where ename='SMITH';dbms_output.put_line('员工的工作是:'||v_emp.job||' ;他的薪水是:'||v_emp.sal);end;2.编写一个程序块,接受用户输入一个部门号,从dept表中显示该部门的名称与所在位置。

方法一:(传统方法)declarev_loc deptcp.dname%type;v_dname deptcp.dname%type;v_deptno deptcp.deptno%type;beginv_deptno :=&部门编号;select loc,dname into v_loc,v_dname from deptcp wheredeptno=v_deptno;dbms_output.put_line('员工所在地是:'||v_loc||';部门名称是:'||v_dname);exceptionwhen no_data_foundthen dbms_output.put_line('您输入的部门编号不存在,请从新输入,谢谢');end;方法二:(使用%rowtype)declarev_dept dept%rowtype;beginselect * into v_dept from dept where deptno=&部门号;dbms_output.put_line(v_dept.dname||'--'||v_dept.loc);end;3.编写一个程序块,利用%type属性,接受一个雇员号,从emp表中显示该雇员的整体薪水(即,薪水加佣金)。

oracle(4级一体化) 附答案

oracle(4级一体化) 附答案

一体化考核模拟试卷《基本SQL操作》模块一、基础知识(每题2分,共50分)1.以下不是分组函数的为 D 。

A.MAX B.SUM C.A VG D.SQRT2.关于ORDERBY子句,下列说法中不正确的是D C 。

A.排序列可以用它们在SELECT子句中的次序号代替B.升序和降序的关键字是ASC和DESCC只能按一个列进行排序D.允许对多个列进行排序。

3.在UPDATE语句中.更改列值的关键字是 A 。

A.SET B,ON C ORDER BY D.WHERE4.事务处理 B 可以防止事务未完前其他用户更新数据。

A.提交B.锁 C.回滚D.备份5.下列 A B 约束对访问权限有要求·:A.UNIQUE B.FOREIGN KEYC.CHECK D.NOT NULL6.以下语句中不属于DDL的是 C B :A.CREATE B.DELETE C.ALTER D.DROP7.Oracle的体系结构是D 类型。

A.服务器 B.客户机 C B/S D.C/S8.搜索—列中的部分匹配的数据,下列关键字中最合适的是 C B 。

A.EXISTSB.LIKE C.BETWEEN D.IN9.下面WHERE子句实现了查找以“黄浦”开头的地址的是 D 。

A.LIKE黄浦...,B.LIKE'黄浦_' C.LIKE'黄浦*' D. LIKE'黄浦%'10.一般来说.—个学校会有很多班级,每个班级有很多学生,因此班级与学生之间可以构成D C 的关系·IA.一对一B.多对一C.一对多 D.多对多11.在关系数据库二,主键的性质是 C 。

A.创建唯一索引,允许空值B.在一个表中可以有多个主键C.为标识表中唯一的实体D.只允许以表中第一个字段建立22812A.V ARCHAR2 D.DATETIME shi SQL13.将多个查询结果返回一个结果集合的运算符是 C 。

PLSQL试题

PLSQL试题

PLSQL试题pl/sql试题I多项选择题(18分)1.oracle数据库中为新创建的表分配的初始空间通常有多大()a、 a块B.a区域c.a段D.a表空间2.关于存储过程参数,正确说法的是()a、存储过程的输出参数可以是标量类型或表类型。

B.存储过程的输入参数可以在没有输入信息的情况下调用该过程c.可以指定字符参数的字符长度,(函数的()或者过程的(number/varchar2))d.以上说法都不对3.下列说法正确的是()a、只要存储过程中有添加、删除和修改语句,就必须添加自治事务。

B.表格数据可以在函数中修改。

C.函数不能递归调用。

D.上述陈述是错误的4.关于触发器,下列说法正确的是()a、可以在表上创建Insteadof触发器。

B.和聚合触发器不能使用“:old”和“:new”C.行级触发器不能用于审核D.触发器可以显示调用5.下列哪些是oracle的伪列()(多选)a、罗伊德b.row_number()c.leveld.rownum6.当表中存在大量重复行数据时,应创建的索引类型应为()a.b树b.reversec.bitmapd.函数索引姓名:________二.填空题(10’)1.交易的特点是。

(4’)2.定义游标的过程包括:声明游标中将要使用的变量、声明游标、_____、_____、并关闭光标(2')3.子程序包括______和_______。

(2’)4.%type关键字作用是_________.(2’)三.编程题1.公司想根据员工的职位提高工资。

公司决定按照以下加薪结构进行处理:(22')designationclerksalesmananalystotherwise五百兆一千亿一千五百万二千编写一个程序块,接受一个雇员名,从emp表中实现上述加薪处理。

2.编写函数检查指定员工的工资是否在有效范围内。

不同职位的薪资范围为:(20')designationraiseclerk1500-25002501-35003501-4500销售人员分析其他4501andabove如果薪资在该范围内,将显示消息“SalarySok”,否则薪资将更新为该范围内的最小值。

OraclePLSQL习题

OraclePLSQL习题

OraclePLSQL习题PL/SQL习题:1、下列哪行代码有错误?1) DECLARE2) v_name varchar2(40):=’David Clark’;3)v_id number(4):=1001;4)v_status BOOLEAN:=FALSE;5)BEGIN6)INSERT INTO EMP(id,name,status)7)values(v_id,v_name,v_status);8)END;A. 第2行B. 第3行C. 第4行D. 第7行2、判断些列语句,v_price的值是多少时,将给变量v_grade赋值为’C’?IF v_price>1000 ThenV_grade:='A';ElseIf v_price>900 thenV_grade:='B';ElseIf v_price>800 thenV_grade:='C';ElseIf v_price>600 thenV_grade:='D';ElseV_grade:='E';End if;End if;End if;A. v_price大于1000B. v_price大于800C. v_price在801和900之间D. v_price在601和800之间3、什么情况下将引起while循环中断?A. 当条件的值是NULL时B. 当条件的值是FALSE时C. 当条件的值是TRUE时D. 当执行到EXIT语句时4、一个IF…THEN…ELSEIF语句可以有多少个else子句?A. 0B. 1C. 没有限制D. 645、考虑下列PL/SQL块时,有多少行被加入到numbers中?BEGINFOR IX IN 5..10LOOPIF IX=6 THENINSERT INTO NUMBERS VALUES(IX);ELSEIF IX=7 THENDELETE FROM NUMBERS;END IF;IF IX=7 THENROLLBACK;COMMIT;END IF;END IF;END LOOP;COMMIT;END;A. 6B. 1C. 5D. 06、假如C1是PL/SQL块中的定义游标,在游标打开之后,取第一条记录之前,C1%NOTFOUND的值是什么?A. TRUEB. FALSEC. NULLD. 都不是7、当下列PL/SQL块执行时,V1的值是什么?DECLAREV0 PLS_INTEGER;V1 BOOLEAN;BEGINBEGINSELECT COUNT(*) INTO V0 FROM EMP;END;BEGINV1:=SQL%FOUND;END;END;A. NULLB. TRUEC. FALSED. 代码清单8、下列代码中哪一行有错误?1)DECLARE2)CURSOR C_EMP IS SELECT EMPNO,SAL FROM EMP;3)R_EMP C_EMP%ROWTYPE;4)BEGIN5)OPEN C_EMP;6)LOOP7)FETCH C_EMP INTO R_EMP;8)EXIT WHEN C_EMP%NOTFOUND;9)UPDATE EMP SET SAL=SAL+50010)WHERE EMPNO=C_EMP.EMPNO;11)END LOOP;12)CLOSE C_EMP;13)END;A. 第2行B. 第3行C. 第7行D. 第8行E. 第10行9、下列PL/SQL执行后将显示什么?DECLAREX VARCHAR2(10):=’TITLE’;Y VARCHAR2(10):=’TITLE’;BEGINIF X>=Y THENDBMS_OUTPUT.PUT_LINE(‘X is greater’);End if;IF Y>=X THENDBMS_OUTPUT.PUT_LINE(‘Y is greater’);End if;END;A. X is greaterB. Y is greaterC. X is greater 和Y is greaterD. 两者都不是10、下列PL/SQL块的哪一行将引起一个错误?1) DECLARE2) CURSOR eCUR(en_IN number) IS3) SELECT * FROM emp WHERE empno=en_in;4) emp_info ecur%ROWTYPE;5) BEGIN6) OPEN ecur(7965);7) FETCH eCUR INTO emp_info;8) END;A. 第2行B. 第3行C. 第4行D. 没有引起错误11、在下列PL/SQL块的第3行将引发一个错误,该错误将在哪儿处理?1)BEGIN2) DECLARE TIMESTAMP DATE:='SYSDATE';3) BEGIN4) DBMS_output.put_line('sw'); --CALL_SOME_PROC;5) EXCEPTION6) WHEN VALUE_ERROR THEN7) DBMS_OUTPUT.PUT_LINE('VALUE ERROR');8) WHEN OTHERS THEN9) DBMS_OUTPUT.PUT_LINE('SOME OTHER ERROR');10) END;11)EXCEPTION12) WHEN OTHERS THEN13) D BMS_OUTPUT.PUT_LINE('unknown ERROR');14)15)END;A. 第7行B. 第9行C. 第13行D. 第9、13行12、什么类型的异常需要一条RAISE语句A. 一个命名的异常B. 一个用户定义异常C. 一个非命名的异常D. 在处理异常时从不需要RAISE语句13、下列PL/SQL代码做了什么工作?INVALID_DATE EXCEPTION;A. 定义一个异常B. 引发一个异常C. 联系一个异常D. 处理一个异常(异常信息:SQLCODE< 如:ORA-1422>、SQLERRM)14、哪些类型的异常不能在出错处理部分进行处理?A. 语法错误B. 数据库错误C. 数据类型不匹配错误D. 被零除错误15、在下列游标定义中错误是什么?CURSOR C1(PEMPNO IN NUMBER(4)) ISSELECT EMPNO,ENAME FROM EMPWHERE EMPNO=PEMPNO;A. 缺少INTO语句B. 在游标定义中,变量名前面需要加”:”C. 游标定义中不能指定inD. 在游标定义中不能指定数据类型的长度16、EMP表有下列数据empno ename salary comm deptno7369 SMITH 800 207499 ALLEN 1600 300 307521 WARD 1250 500 307566 JONES 2975 207654MARTIN 1250 1400 30下列PL/SQL块执行后,V_EMPNO的值是什么?(EMPNO是EMP 表的主键) SET SERVEROUTPUT ONDECLAREV_EMPNO EMP.EMPNO%TYPE:=800;CURSOR C_EMPNO(P_EMPNO EMP.EMPNO%TYPE:=7369) IS SELECT EMPNO FROM EMP WHERE EMPNO=P_EMPNO;BEGINOPEN C_EMPNO(null);FETCH C_EMPNO INTO V_EMPNO;CLOSE C_EMPNO;dbms_output.put_line(v_empno);END;A. 7369B. 800C. NULLD. 017、参看上题的emp数据,当下列块执行时,V_A的值是什么?DECLAREV_A NUMBER;V_E NUMBER;CURSOR C1 IS SELECT EMPNO FROM EMP;BEGINOPEN C1;LOOPFETCH C1 INTO V_E;V_A:=C1%ROWCOUNT;EXIT WHEN C1%NOTFOUND;END LOOP;CLOSE C1;END;A. 5B. 6C. 4D. 018、参看上题的emp数据,当下列块执行时,V_COUNT的值是什么?DECLAREV_COUNT NUMBER;R_EMP EMP%ROWTYPE;BEGINSELECT * INTO R_EMP FROM EMP WHERE EMPNO<7700;V_COUNT:=SQL%ROWCOUNT;END;A. 块内有错,执行将失败B. 4C. 5D. 019、参看上面的emp数据,当下列块执行时,将输出什么?Set serveroutput onDECLAREV_ENAME EMP.ENAME%TYPE;BEGINSELECT ENAME INTO V_ENAME FROM EMP WHERE EMPNO=9999;IF SQL%NOTFOUND THENDBMS_OUTPUT.PUT_LINE(‘NO SUCH EMPLOYEE NUMBER’);ELSEDBMS_OUTPUT.PUT_LINE(V_ENAME);END IF;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE(‘INVALID EMPLOYEE NUMBER’);END;A. 块执行时将返回一个错误B. NO SUCH EMPLOYEE NUMBERC. NO NAMED. INVALID EMPLOYEE NUMBER20、考虑下列执行块,当块执行并且没有记录被删除时,V_COUNT的值是什么?DECLAREV_COUNT NUMBER;BEGINDELETE FROM EMP WHERE EMPNO<0;V_COUNT:=SQL%ROWCOUNT;END;A. NULLB. TRUEC. 0D. FALSE21、在一个PL/SQL块中,执行任何语句之前SQL%NOTFOUND 的值是什么?A. NOTFOUNDB. TRUEC. NULLD. FALSE22、在一个块中不允许出现哪些命令?A. TRUNCATEB. DELETEC. SAVEPOINTD. ALTER TABLE23、考虑下列SELECT语句,假如没有满足where条件的行,将发生什么?Select count(*) into v_count from emp where sal<10;A. 引起一个NO_DATA_FOUND错误B. SELECT 将成功地执行C. 引起一个TOO_MANY_ROWS错误D. COUNT(*)在PL/SQL块内使用是无效的24、考虑下列PL/SQL块,选择最合适的答案。

第4-6章习题答案oracle

第4-6章习题答案oracle

第4-6章习题答案oracle一、在客户表customers中提取以下数据1、输出客户全名(First_name+last_name)具有最多英文字母数的客户资料select * from customerswhere length(first_name||last_name)=(select max(length(first_name||last_name))from customers);2、输出所有客户的资料,如果生日为空,则用1970年1月1日代替,如果电话为空,则用0代替。

select customer_id,first_name,last_name,nvl(dob,to_date('19700101','yyyymmdd')),nvl(phone,'0')from customers;3、查询First_name中第2个字母是元音字母(aeiou)的客户全名select first_name||' '||last_namefrom customerswhere lower(substr(first_name,2,1)) in ('a','e','i','o','u');4、输出所有1970年6月1日之前出生的客户资料,其中生日(dob)的输出形式改成“xxxx 年xx月xx日”select customer_id,first_name,last_name,to_char(dob,'yyyy')||'年'||to_char(dob,'mm')||'月'||to_char(dob,'dd')||'日',phonefrom customerswhere dob<to_date('19700601','yyyymmdd');< bdsfid="124" p=""></to_date('19700601','yyyymmdd');<>5、统计年龄大于17000天的客户数量select count(*)from customerswhere sysdate-dob>17000;6、统计年龄大于45岁的客户数量select count(*)from customerswhere months_between(sysdate,dob)/12>45;7、输出客户名字、客户生日以及客户生日所在月份有多少天select first_name||' '||last_name,dob,to_char(last_day(dob),'dd') from customers;8、提取客户名字、客户生日所在的月份select first_name||' '||last_name,to_number(to_char(dob,'mm'))from customers;二、在商品表products中提取以下数据1、有几种不同的商品类型(product_type_id)?(不统计商品类型为空的商品)select count(distinct product_type_id)from productswhere product_type_id is not null;2、商品描述信息(description)里带music的商品数量select count(*)from productswhere description like'%music%';select count(*)from productswhere instr(description,'music')>0;3、查询描述信息(description)里带alien的商品价格总和。

oracle sql 试题及答案

oracle sql 试题及答案

oracle sql 试题及答案在Oracle数据库管理和开发中,SQL(Structured Query Language)是一种标准化的关系型数据库语言。

在这篇文章中,我们将提供一些Oracle SQL试题及其答案,旨在帮助读者巩固和加深对Oracle SQL语言的理解。

请注意,答案中不再重复题目,仅给出相应的解答。

1. 以下SQL语句中,哪一个用于创建一个名为"Employees"的表?CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,LastName VARCHAR2(50),FirstName VARCHAR2(50),DateOfBirth DATE);2. 在一个名为"Employees"的表中,你想要删除LastName为"Smith"的所有行。

你应该使用以下哪个SQL语句?DELETE FROM Employees WHERE LastName = 'Smith';3. 假设你有一个名为"Employees"的表,你想要增加一个名为"Salary"的列,数据类型为NUMBER(10,2)。

你应该使用以下哪个SQL 语句?ALTER TABLE Employees ADD (Salary NUMBER(10,2));4. 以下SQL查询语句将返回哪些列?SELECT LastName, FirstName FROM Employees;答案:该查询将返回"Employees"表中的LastName和FirstName列。

5. 以下SQL语句将返回"Employees"表中有多少条记录?SELECT COUNT(*) FROM Employees;答案:该查询将返回"Employees"表中的记录数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题四
一、选择题
1.关于PL/SQL程序设计语言的优点,说法不正确的是()
A.PL/SQL是结构化查询语言,与SQL语言没有区别
B.PL/SQL是集过程化功能和查询功能为一体的语言
C.PL/SQL程序设计语言可以进行错误处理
D.PL/SQL程序设计语言可以定义变量,使用控制结构
2.关于在PL/SQL程序设计中使用输出语句,说法不正确的是()
A.使用输出语句之前,需要激活系统包DBMS_OUTPUT
B.输出语句为DBMS_OUTPUT系统包中的PUT_LINE函数
C.激活输出包的语法为SET serveroutput ON
D.PL/SQL中行注释用符号"//"
3.下列选项中,()是PL/SQL块的必选项。

A.DECLARE
C. EXCEPTION
D. SELECT
B.BEGIN
4.在PL/SQL块中不能直接嵌人(
A. SELECT
B.INSERT
C. CREATE TABLE
MIT
5.下列变量定义方法不正确的是()。

A.al VARCHAR2(10);a2 al%TYPE;
B. a3 student.sno%TYPE;
C. a4 student%ROWTYPE;
D.b2 bl%TYPE;b1 VARCHAR2(10);
6.下列记录类型的变量有()个分变量。

CURSOR s 1 IS SELECT sno, sname, age FROM student;
v_c s_18 ROWTYPE;
A.1
B.2
C.3
D.4
7.在PL/SQL中,非法的标识符是()
A. table $123
B.123 table
C.table123
D.Table_123
8.判断IF语句∶
IF v_num<5THEN v_example:= 1;
ELSIF v_num<10 THEN v_example:= 2;
ELSIF v_num>20 THEN v_example:= 3;
ELSIF v_num>35 THEN v_example:=4;
ELSE v_example:=5;
END IF
如果v_num是37,值()将被赋值给v_example
A.1
B.2
C.3
D.4
9.判断IF语句∶
IF a>10 THEN b:=0;
ELSE IF a>5 THEN b:= 1;
ELSE THEN b:= 2;
END;
上述语句中有()处错误。

A.0
B.1
C.2
D.3
10.判断CASE语句∶
CASE a
WHEN'A'THEN a:='M';
WHEN'A'THEN a:='N';
WHEN'B'THEN a:='P';
WHEN'B'THEN a:='Q';
END CASE;
如果变量a的初始值是B,那么执行CASE语句之后a的值是()。

A.M
B.N
C. P
D.Q
11.判断简单循环语句∶
DeCLARE
suml NUMBER:=0;
i NUOMBER:=1;
BEGIN
loop
suml:= sum1 + i;i++;
exit when i>10;
EXD;
dbms_output.put_line('1~10之间的整数和是∶',suml); END;
上述语句中有()处错误。

A.0
B.1
C.2
D.D.3
12.执行以下语句∶
DBECLARE
n NUMBER:=1;suml NUMBER:=0;BBGIN
WHILE n<=10 LOOP
sum1:= sum1+n;n:=n+1;END L00P;
dbms_output.put_line(sum1);
END;
执行完成后输出的结果是()。

A.0
B.11
C.55
D.死循环
13.执行以下语句∶DECLARE
iNUMBER;BEGIN
FORiIN5..4 LOOP
dbms_output.put_line('');END LOOP;END;3
执行完成后循环次数为()
A.0次
B.2次
C.4次
D.5次
二、应用题
1.IF条件语句实现。

通过键盘输人某个学生的学号和课程号,查询该学生选课表中的成绩,判断成绩的等级并输出.
若成绩>90分,输出"成绩为∶优秀";若成绩>80分,输出"成绩为∶良好";
若成绩>70分,输出"成绩为∶中等";若成绩>60分,输出"成绩为∶及格";
若成绩<60分,输出"成绩为∶不及格"。

2.计算1~100的偶数和。

输出"1~~100的偶数和为∶?"。

要求分别用简单LOOP循环、WHLE循环和FOR循环实现。

第1章PL/SQL概述
一、选择题
1.A
2.D
3.B
4.C
5.D
6.C
7.B
8.C
9.D 10.C 11.D 12.C 13.A
二、上机实验题
1.1. IF条件语句实现
通过键盘输入某个学生的学号和课程号,查询该学生选课表中的成绩,判断成绩的等级并输出。

若成绩>90分,输出“成绩为:优秀”;
若成绩>80分,输出“成绩为:良好”;
若成绩>70分,输出“成绩为:中等”;
若成绩>60分,输出“成绩为:及格”;
若成绩<60分,输出“成绩为:不及格”;
答:
declare
v_sno sc.sno%type:=&a;//通过键盘输入
v_cno o%type:=&b; //通过键盘输入
v_grade sc.grade%type;
begin
select grade into v_grade
from sc
where sno=v_sno and cno=v_cno;
dbms_output.put_line('成绩为:'||v_grade);
if v_grade>90 then dbms_output.put_line('成绩为:优秀');
elsif v_grade>80 then dbms_output.put_line('成绩为:良好'); elsif v_grade>70 then dbms_output.put_line('成绩为:中等'); elsif v_grade>60 then dbms_output.put_line('成绩为:及格'); else dbms_output.put_line('成绩为:不及格');
end if;
end;
2. 计算1-100的偶数和。

输出“1-100的偶数和为:?”
要求分别用简单loop循环、while循环和for循环实现
答:
简单loop循环:
declare
v_sum NUMBER:=0;
v_num number:=1;
begin
loop
if mod(v_num,2)=0
then v_sum:=v_sum+v_num;
end if;
v_num:=v_num+1;
if v_num>100 then
exit;
end if;
end loop;
dbms_output.put_line('1-100的偶数和为:'||v_sum);
end;
while循环:
declare
v_sum NUMBER:=0;
v_num number:=1;
begin
while v_num<=100
loop
if mod(v_num,2)=0
then v_sum:=v_sum+v_num;
end if;
v_num:=v_num+1;
end loop;
dbms_output.put_line('1-100的偶数和为:'||v_sum); end;
for循环:
declare
v_sum NUMBER:=0;
begin
for i in 1..100
loop
if mod(i,2)=0
then v_sum:=v_sum+i;
end if;
end loop;
dbms_output.put_line('1-100的偶数和为:'||v_sum); end;。

相关文档
最新文档