oracle_存储过程练习题
- 格式:doc
- 大小:380.50 KB
- 文档页数:8
题目一、每个部门的前三个工资最高的员工每个部门的前三档工资的所有员工题目二、users1name company company_address url1Joe ABC Work Lane ;Jill XYZ Job Street ;写PL/SQL来创建新表users2name company company_address url1Joe ABC Work Lane Joe ABC Work Lane Jill XYZ Job Street Jill XYZ Job Street 综合题目三、create table C USTOMERS --客户表(id number(8) primary key,taaccoid char(12),name varchar2(100),birthdate nu mber(8),certno varchar2(20),province number(8),age nu mber(4));1 111000051346 李惠萍19780304 430111************2 32...create table PR OVINCE --省份表(id nu mber(8) primary key,name varchar2(100));1 北京市...create table TA_SHARE --基金份额表(taaccoid char(12),fundcode char(6),curshare nu mber(16,2));111000051346 110002 5228.48create table PR ODUC TS --基金产品表(fundcode char(6),fund name varchar2(100));110001 产品1...建立存储过程,输入参数:I_FUNDCODE --基金产品,I_PROVINC E --省份输出参数:O_STA TUS --态值,R T_CURSOR --返回游标返回如下表格的数据:省份基金产品1~20岁(个)21~40岁(个)41岁以上(个)份额分别在以上表上建立合理的索引,要求存储过程中写出的SQL必须不能对CR M_CUS TOMERS和CRM_TA_SHAR E进行全表扫描。
oracle练习题及答案Oracle练习题及答案Oracle是一种强大的关系数据库管理系统,被广泛应用于企业级应用程序和数据管理中。
为了帮助大家更好地掌握Oracle数据库的知识,以下是一些Oracle练习题及答案,希望能够帮助大家更好地理解和掌握Oracle数据库的知识。
1. 什么是Oracle数据库?Oracle数据库是一种关系数据库管理系统,由美国Oracle公司开发。
它是一种高性能、可靠性高的数据库系统,被广泛应用于企业级应用程序和数据管理中。
2. Oracle数据库的特点有哪些?Oracle数据库具有以下特点:高性能、高可用性、可伸缩性、安全性高、灵活性强、易管理等。
3. 如何创建一个新的数据库用户?在Oracle数据库中,可以使用以下SQL语句来创建一个新的数据库用户:```CREATE USER username IDENTIFIED BY password;```4. 如何查看Oracle数据库中所有的表?可以使用以下SQL语句来查看Oracle数据库中所有的表:```SELECT table_name FROM user_tables;```5. 如何在Oracle数据库中插入一条新的记录?可以使用以下SQL语句来在Oracle数据库中插入一条新的记录:```INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);```6. 如何在Oracle数据库中更新一条记录?可以使用以下SQL语句来在Oracle数据库中更新一条记录:```UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;```7. 如何在Oracle数据库中删除一条记录?可以使用以下SQL语句来在Oracle数据库中删除一条记录:```DELETE FROM table_name WHERE condition;```通过以上Oracle练习题及答案的学习,相信大家对Oracle数据库有了更深入的了解。
Oracle PL/SQL测试题姓名:___ _________一、选择题1、Oracle数据库中为新创建的表分配的初始空间通常为多大(B)A、一个块B、一个区C、一个段D、c一个表空间2、关于存储过程参数,正确的说法是(B)A、存储过程的输出参数可以是标量类型,也可以是表类型B、存储过程输入参数可以不输入信息而调用过程C、可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))D、以上说法都不对3、下列说法,正确的说法是(B)A、只要在存储过程中有增删改语句,一定加自治事务B、在函数内可以修改表数据C、函数不能递归调用D、以上说法都不对4、有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是(D)A、select * from 产品表where价格>1000B、select sum(价格) from 产品表group by 所属分类having max(价格)>1000C、select所属分类,sum(价格) from 产品表where 价格>1000 group by 所属分类D、select所属分类,sum(价格) from 产品表where max(价格)>1000 group by 所属分类5、关于触发器,下列说法正确的是(B)A、可以在表上创建INSTEAD OF 触发器B、语句级触发器不能使用“:old”和“:new”C、行级触发器不能用于审计功能D、触发器可以显式调用6、下列那些是Oracle的伪列(ACD)A、ROWIDB、ROW_NUMBER()C、LEVELD、ROWNUME、COLUMN7、当表的重复行数据很多时,应该创建的索引类型应该是(C )A、B树B、reverseC、bitmapD、函数索引8、在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?(C )A、primary keyB、uniqueC、checkD、not null9、利用游标来修改数据时,所用的。
o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。
Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。
请按下列要求分别晨SQL*PLUS下编程。
存储过程语法练习题推荐随着数据库技术的不断发展,存储过程作为一种常见的数据库编程技术,被广泛应用于各种项目中。
掌握存储过程的语法和使用技巧,对于数据库开发人员来说是非常重要的。
在本文中,将会推荐一些存储过程语法练习题,帮助读者巩固和提升其存储过程的技能。
1. 基础入门题:编写一个简单的存储过程,实现对一个指定表中的数据进行插入操作。
要求在存储过程中使用变量来指定插入的数据,并且插入的数据需要满足一定的约束条件。
这个题目可以帮助读者熟悉存储过程的基本语法,了解如何在存储过程中使用变量和控制结构。
同时,通过约束条件的设置,读者可以巩固对数据库数据一致性的控制。
2. 复杂查询题:编写一个存储过程,根据给定的条件,在指定的表中进行数据查询,并返回满足条件的结果。
要求在存储过程中使用游标来处理查询结果集,并且能够处理查询结果为空的情况。
这个题目可以帮助读者提升对存储过程中游标的使用技巧,了解如何处理查询结果为空的情况。
通过编写这样的存储过程,读者可以更好地掌握查询语句的编写和结果集的处理。
3. 复杂业务逻辑题:编写一个存储过程,实现一个复杂的业务逻辑。
比如,根据一系列指定条件,查询数据库中的数据并进行计算,最后返回计算结果。
这个题目可以帮助读者掌握存储过程中复杂业务逻辑的实现方法,了解如何结合查询、计算和控制结构来实现复杂的业务需求。
通过解决这样的问题,读者可以提升自己的数据库设计和编程能力。
4. 性能优化题:给定一个存在性能问题的存储过程,通过优化存储过程的代码,提升其执行效率。
要求在优化过程中使用合适的索引和优化技巧。
这个题目可以帮助读者理解存储过程的性能优化方法,了解如何通过调整代码和使用合适的索引来提升存储过程的执行效率。
通过解决这样的问题,读者可以提高自己的数据库性能优化水平。
通过上述的存储过程语法练习题,读者可以逐步提升自己在存储过程编写和优化方面的技能。
在实际的项目中,存储过程的使用是非常常见的,因此掌握存储过程的基本技巧和高级应用对于数据库开发人员来说是非常重要的。
Oracle相关练习题(doc 7页)一、填空1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。
2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。
3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。
4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。
5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。
6.在SQL语句中,用于向表中插入数据的语句是Insert。
7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select语句。
8.使用Describe命令可以显示表的结构信息。
9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。
10.使用Save命令可以将缓冲区中的SQL命令统将使用下列哪一个进程来释放它所占用的资源?( D )A.DBWR B.LGWR C.SMON D.PMON3. 如果要查询数据库中所有表的信息,应当使用下列哪种数据字典视图?( A )A. DBA视图B. ALL视图C. USER视图D. 动态性能视图4. 下列哪一项是Oracle数据库中最小的存储分配单元? ( C )A. 表空间B. 段C. 盘区D. 数据块5. 下面的各选项中哪一个正确描述了Oracle数据库的逻辑存储结构? ( A )A. 表空间由段组成,段由盘区组成,盘区由数据块组成B. 段由表空间组成,表空间由盘区组成,盘区由数据块组成C. 盘区由数据块组成,数据块由段组成,段由表空间组成D. 数据块由段组成,段由盘区组成,盘区由表空间组成6. 下列的哪个子句在SELECT语句中用于排序结果集?( D )A. Having子句B. Where子句C. From子句D. Order by子句7. Having子句的作用是( B )。
第一阶段Q.编写一个PL/SQL程序块以显示所给出雇员编号的雇员的详细信息。
A.DECLAREerec emp%ROWTYPE;BEGINSELECT * INTO erec FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE('EmpNo' || ' ' || 'Ename' || ' '|| 'Job' || ' ' || 'Manager' || ' ' || 'HireDate' || ' ' || 'Salary' || ' ' || 'Commision' || ' ' || 'DeptNo');DBMS_OUTPUT.PUT_LINE(erec.ename || ' ' || erec.job || ' ' || erec.mgr || ' ' ||erec.hiredate || ' ' || erec.sal || ' ' || m || ' ' || erec.deptno);END;/Q.编写一个PL/SQL程序块以计算某个雇员的年度薪水总额。
A.DECLAREesal NUMBER;eename emp.ename%TYPE;BEGINSELECT (NVL(sal,0)+NVL(comm,0))*12,ename INTO esal,eename FROM emp WHERE empno=&雇员编号;DBMS_OUTPUT.PUT_LINE(eename || '''s Years Salary is ' || esal);END;/Q.按下列加薪比执行:Deptno Raise(%age)10 5%20 10%30 15%40 20%加薪的百分比是以他们现有的薪水为根据的。
oracle练习题(打印版)### Oracle数据库练习题#### 一、选择题1. Oracle数据库中,哪个命令用于创建表?- A. CREATE TABLE- B. CREATE DATABASE- C. DROP TABLE- D. ALTER TABLE2. 以下哪个不是Oracle数据库的数据类型?- A. NUMBER- B. CHAR- C. DATE- D. IMAGE3. 在Oracle数据库中,哪个命令用于删除表?- A. DELETE FROM- B. DROP TABLE- C. REMOVE TABLE- D. ERASE TABLE4. Oracle数据库中,如何查看当前用户?- A. SELECT USER FROM DUAL;- B. SELECT CURRENT_USER FROM DUAL;- C. SELECT USERNAME FROM ALL_USERS;- D. SELECT CURRENT_USER FROM ALL_USERS;5. 以下哪个命令用于在Oracle数据库中创建索引?- A. CREATE INDEX- B. CREATE KEY- C. CREATE CONSTRAINT- D. CREATE UNIQUE#### 二、填空题1. 在Oracle数据库中,使用____命令可以查看表结构。
2. Oracle数据库中,使用____命令可以查看当前数据库的所有表。
3. 要删除Oracle数据库中的行,可以使用____命令。
4. Oracle数据库中,____用于存储二进制数据。
5. Oracle数据库中,____命令用于查看数据库中所有的索引。
#### 三、简答题1. 描述Oracle数据库中事务的ACID属性。
2. 解释Oracle数据库中的锁定机制。
3. 说明Oracle数据库中视图的作用。
#### 四、操作题1. 创建一个名为`Employees`的表,包含以下字段:- `EmployeeID` NUMBER(10) PRIMARY KEY,- `FirstName` VARCHAR2(50),- `LastName` VARCHAR2(50),- `HireDate` DATE,- `Salary` NUMBER(10, 2),- `DepartmentID` NUMBER(10).2. 向`Employees`表中插入以下数据:- `EmployeeID`: 1001, `FirstName`: 'John', `LastName`:'Doe', `HireDate`: '2023-01-01', `Salary`: 70000,`DepartmentID`: 101.- `EmployeeID`: 1002, `FirstName`: 'Jane', `LastName`:'Smith', `HireDate`: '2023-02-15', `Salary`: 50000,`DepartmentID`: 102.3. 编写一个查询,显示所有员工的姓名和工资,按工资从高到低排序。
oracle考试题Oracle是一种关系数据库管理系统,广泛应用于企业和机构的数据存储和管理。
如果你想在这个领域取得职业成功,学习和掌握Oracle技术是至关重要的。
下面就是一些Oracle考试题,希望能帮助你更好地准备Oracle认证考试。
1. 什么是Oracle数据库?简要描述Oracle数据库的特点和优势。
Oracle数据库是一种关系数据库管理系统,由Oracle Corporation开发。
它具有高性能、高可靠性、可伸缩性和安全性等特点。
Oracle数据库支持SQL语言,可用于数据存储、数据管理和数据分析等领域。
2. 什么是Oracle数据库实例?它和数据库之间的关系是什么?Oracle数据库实例是Oracle数据库在内存和硬盘上的运行实例。
它包括了数据库缓冲区、PGA、SGA和后台进程等组件。
数据库是物理存储数据的地方,而数据库实例则是在内存中运行的程序。
3. 如何创建一个新的Oracle用户?要创建一个新的Oracle用户,可以使用CREATE USER语句。
例如:CREATE USER username IDENTIFIED BY password;4. 如何给Oracle用户授予SELECT权限?要给Oracle用户授予SELECT权限,可以使用GRANT SELECT命令。
例如:GRANT SELECT ON table_name TO username;5. 什么是Oracle的PL/SQL?PL/SQL是Oracle数据库的过程式编程语言。
它结合了SQL的强大和易用性以及编程语言的结构化编程特点。
PL/SQL提供了条件控制、循环、异常处理等特性,可用于编写存储过程、触发器、函数等数据库对象。
6. 如何在Oracle数据库中创建一个存储过程?要在Oracle数据库中创建一个存储过程,可以使用CREATE PROCEDURE语句。
例如:CREATE PROCEDURE procedure_nameASBEGIN-- 存储过程内容END;7. 什么是Oracle的视图?Oracle的视图是一种虚拟表,它基于一个或多个表的查询结果。
o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。
Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。
请按下列要求分别晨SQL*PLUS下编程。
[多选题]1.请选择以下那几项是oracle 客户端的链接工具:()A、IE 浏览器B、SQL*PLUSC、PLSQL DeveloperD、以上答案均不对答案: ABC2. ORACLE 常用的约束条件类型( )A、PRIMARYB、FOREIGNC、UNIQUED、CHECK答案: ABCD3.在oracle 环境下,需要创建表空间,当数据超过表空间大小时,要对表空间进行扩充,以下选项中扩充方式正确的有:()A、添加数据文件B、改变数据文件的大小C、允许数据文件自动扩展D、表空间不能再用重新创建表空间。
答案: ABC4.表命名时需要遵循的规则中选择正确的是:()A、表明的首字符应该为字母B、不能使用保留字C、可以使用下划线.数字.字母.但不能使用空格和单引号。
D、同一用户下表名不能重复。
答案: ABCD5.在Oracle 中, PL/SQL 块中定义了一个带参数的游标:CURSOR emp_cursor(dnum NUMBER) ISSELECT sal,comm FORM emp WHERE deptno=dnum;那么正确打开此游标的语句是( )。
A、OPEN emp_cursor(20);B、OPEN emp_cursor FOR 20;C、OPEN emp_cursor USING 20;D、FOR rmp_rec IN emp_cursor(20) LOOP ... END LOOP;答案: AD6.下列关于约束和索引的说法中,正确的是()。
A、在字段上定义PRIMARY KEY 约束时会自动创建B 树唯一索引B、在字段上定义UNIQUE 约束时会自动创建一个B 树唯一索引C、默认情况下,禁用约束会删除对应的索引,而激活约束会自动重建相应的索引D、定义FOREIGN KEY 约束时会创建一个B 树唯一索引答案: ABC7.下列关于ORACLE 的to_date 函数和to_char 函数,描述正确的是()选两项A、to_char 函数是将字符串数据转换为日期数据B、to_date 函数是将字符串数据转换为日期数据C、to_char 函数是将日期数据转换为字符数据D、to_date 函数是将日期数据转换为字符数据答案: BC8.查看表PRODUCTS 。
Oracle数据库试题100题(附答案)1.当Oracle服务器启动时,下列哪种文件不是必须的(D)。
A.数据文件B.控制文件C.日志文件D.归档日志文件2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据(B)。
A.用户进程B.服务器进程C.日志写入进程(LGWRD.检查点进程(CKPT)3.在Oracle中,一个用户拥有的所有数据库对象统称为(B)。
A.数据库B.模式C.表空间D.实例4.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME V ARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名(C)。
A.SELECT name FROM teacher WHERE email = NULL;B.SELECT name FROM teacher WHERE email <> NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;5.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是(B)。
A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B6.在Windows操作系统中,Oracle的(A)服务监听并接受来自客户端应用程序的连接请求。
A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(B)表空间分配给用户作为默认表空间。
[判断题] 1. 隐式游标的属性%ISOPEN总是为FALSE。 答案: 对 2. 显式游标的%ISOPEN根据游标的状态确定值 答案: 错 3. 隐式游标的SELECT语句带有INTO子串,只有一行数据被处理。 答案: 对 4. 显式游标可以处理多行数据, 在程序中设置循环, 取出每一行数据。 答案: 对 5. 可以在PL/SQL中使用GOTO语句使运行流程进行跳转。 答案: 错 6. 因为存储过程不返回值, 使用时只能单独调用; 而函数却能出现在能放置表达式的任何位置。 答案: 对
7. 存储过程是已经编译好的代码, 在调用的时候不必再次编译, 提高了程序的运行效率。 答案: 对
8. Oracle 提供了多种类型的表,包括堆表、外部表、索引组织表、临时表、对象表等 答案: 错
9. 为了使用户在大量数据的读写操作和查询操作中速度更快, 可以使用分区表技术。 答案: 对
10. 在Oracle 中,索引技术使用了ROWID来进行数据的快速定位。 答案: 对 11. Oracle 中,索引可以分为B 树索引和位图索引,默认使用的是位图索引 答案: 错 12. Oracle 建议,当一个列的所有取值数量与行的总数的比例小于1%时,该列不再适合使用位图索引,而适用于B树索引 答案: 错
13. 视图是由一个或若干基表产生的数据集合, 但视图不占存储空间。建立视图可以保护数据安全(仅让用户查询修改可以看见的一些行列)、简化查询操作、保护数据的独立性
答案: 对
14. 普通视图占有数据库存储空间 答案: 错 15. 产生不重复整数的数据库应用的最好解决办法, 就是使用序列, 尤其在多用户环境下更是如此 答案: 对
16. 行级触发器:无论受影响的行数是多少,都只执行一次 答案: 错 17. 语句级触发器在每个数据修改语句执行后只调用一次, 而不管该操作将影响到多少行 答案: 对
18. 锁用于提供数据的完整性和一致性 答案: 对 19. 事务的结束只能是rollback 或者commit 答案: 错 20. oracle CONNECT角色具有所有的权限 答案: 错 21. 数据字典DBA_ROLES 记录了数据库中全部角色的信息 答案: 错 22. CONNEC、TRESOUR、CEDBA、EXP_FULL_DATABA、SIEMP_FULL_DATABAS都E是系统预定义的角色 答案: 对
1. 创建用户kaifa(密码亦为kaifa), 并分配connect,create table,resource权限。 CREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATA TEMPOARY TABLESPACE TEMPDATA;
GRANT CONNECT , CREATE TABLE , RESOURCE TO KAIFA
2. 在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。 概要表(CCB_GYB)信息如下: ACCOUNTING_DATE DATE 报表日期(唯一索引) RMB_YTD_BALANCE NUMBER 人民币余额 CNY_YTD_BALANCE NUMBER 本位币余额 USD_YTD_BALANCE NUMBER 外币折美元余额 其中币种代码如下: --RMB 人民币 --CNY 本位币 --USD 外币折美元 如果币种为RMB,则取出人民币余额作为本期余额;为CNY,则取本位币余额;为USD 则取外币折美元余额。
请编写一个函数GetCurrBal( qrp_rq IN VARCHAR2, --报表日期 qrp_code IN VARCHAR2 --币种 ) CREATE OR REPLACE FUNCTION GetCurrBal( Vqrp_rq Date , --报表日期 Vqrp_code VARCHAR2 --币种 ) RETURN NUMBER IS VAMOUNT NUMBER ; VDATE Date; BEGIN
SELECT ACCOUNTING_DATE INTO VDATE FROM CCB_GYB Where ACCOUNTING_DATE = Vqrp_rq; IF Vqrp_code = 'RMB' THEN
SELECT RMB_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'RMB' AND ACCOUNTING_DATE= VDATE; ELSE IF Vqrp_code = 'CNY' THEN SELECT CNY_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'CNY'; ELSE SELECT USD_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= 'USD';
END IF ; END IF ; COMMIT; RETURN VAMOUNT; END; ---对多行处理,用游标 ---多单行处理,用SELECT
实现此功能,并能在sqlplus里调用。 其中建表语句如下: create table CCB_GYB ( ACCOUNTING_DATE DATE, RMB_YTD_BALANCE NUMBER, CNY_YTD_BALANCE NUMBER, USD_YTD_BALANCE NUMBER ); 创建索引:create unique index CCB_GYB_IDX on CCB_GYB (ACCOUNTING_DATE);
3. 假设有张学生成绩表(CJ)如下 [姓名] [学科] [成绩] 张三 语文 80 张三 数学 86 张三 英语 75 李四 语文 78 李四 数学 85 李四 英语 78
现有需求如下: (1)要求统计分数段的人数。显示结果为: [成绩] [人数] 06080CREATE OR REPLACE Procedure SCOUNT Is VCOUNT1 Varchar2(10); VCOUNT2 Varchar2(10); VCOUNT3 Varchar2(10); Begin
Select Count(*) Into VCOUNT1 From CJ Where SCORE Between 0 And 60; Select Count(*) Into VCOUNT2 From CJ Where SCORE Between 61 And 80; Select Count(*) Into VCOUNT3 From CJ Where SCORE Between 81 And 100; dbms_output.put_line ('分数'|| ‘ ‘|| ‘人数’); dbms_output.put_line ('0 dbms_output.put_line ('60 dbms_output.put_line ('81
End;
(2)要求根据姓名,把各科成绩显示在一条记录里。显示结果如下: 姓名 语文 数学 英语 总成绩 ---------- ---------- ---------- ---------- ---------- 李四 78 85 78 241 张三 80 86 75 241 总分 158 171 153 482
(Select D.SSNAME,D.SSOCRE 数学,D.YSCORE 语文,D.ESCORE 英语 ,Sum(D.SSOCRE+D.YSCORE+D.ESCORE) 总成绩 From
(Select A.SNAME SSNAME ,A.SCORE SSOCRE,B.SCORE YSCORE,C.SCORE ESCORE From CJ A ,CJ B ,CJ C Where A.SNAME=B.SNAME And C.SNAME=A.SNAME And A.XK='语文' And B.XK='数学' And C.XK='英语')D
Group By D.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE ) Union All
(Select '总分' 姓名,Sum(FF.BB) 数学 ,Sum(FF.CC) 语文,Sum(FF.DD) 英语,Sum(FF.EE) 总成绩 From (Select D.SSNAME AA,D.SSOCRE BB,D.YSCORE CC,D.ESCORE DD,Sum(D.SSOCRE+D.YSCORE+D.ESCORE) EE From (Select A.SNAME SSNAME ,A.SCORE SSOCRE,B.SCORE YSCORE,C.SCORE ESCORE From CJ A ,CJ B ,CJ C Where A.SNAME=B.SNAME And C.SNAME=A.SNAME And A.XK='语文' And B.XK='数学' And C.XK='英语') D
Group By D.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE ) FF)
行转列 Select SNAME ,SUM(DECODE(XK,'语文',SCORE,0)) 语文,Sum(DECODE(XK,'数学',SCORE,0)) 数学 ,Sum(DECODE(XK,'英语',SCORE,0)) 英语 , SUM(SCORE) AA From CJ Group By SNAME
Union All Select '总分' ,Sum(DECODE(XK,'语文',SCORE,0)) 语文,Sum(DECODE(XK,'数学',SCORE,0)) 数学 ,Sum(DECODE(XK,'英语',SCORE,0)) 英语 , SUM(SCORE) From CJ
使用SQL语句或存储过程(显示结果时可用dbms_output打印出来)实现这两个功能。
DBMS_OUTPUT.PUT_LINE(‘姓名’ ‘语文’ ‘数学’ ‘英语’ ‘总成绩’)
4. 某一客户表包含如下信息: INDIVIDUALID 客户ID VARCHAR2(20)(唯一键) BIRTHDATE 出生日期 Date GENDER 性别 VARCHAR2(10) SALARY 月收入 NUMBER(10,2) CERT-TYPE 证件类型 VARCHAR2(10) CERT-NO 证件号码 VARCHAR2(20) CREATED-TS 进入系统的时间 TIMESTAMP 现要把该表数据导出成文件,导出的内容格式如下: 属性列 列长度 备注 INDIVIDUALID 20 BIRTHDATE 8 格式为:yyyymmdd GENDER 10 SALARY 13 CERT-TYPE 10 CERT-NO 20 CREATED-TS 17 格式为:yyyymmddhh24missff3 要求每个字段列的内容长度是固定的,不足部分由空格补齐,字符串左对齐(右补空格),数字右对齐。如果列的内容为null,需先进行处理,字符串默认为空格,数字默认为0,日期默认为99991231,时间戳默认为99991231000000000。 请编写程序实现该导出功能。
创建表脚本: create table tb1010( INDIVIDUALID VARCHAR2(20), BIRTHDATE date, GENDER VARCHAR2(10), SALARY NUMBER(10,2), CERT_TYPE VARCHAR2(10), CERT_NO VARCHAR2(20), CREATED_TS TIMESTAMP ); 5. 某语音电话本表信息如下: Call_book_info MOBILE_ID 移动号码 VARCHAR2(12) CALLIN_TIME 呼入时间 Date CALLOUT_TIME 呼出时间 Date STATUS 状态 CHAR(1)
在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的号码(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。编写存储过程实现删除重复号码的功能。 要求如下: (1) 为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。 (2) 要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。 (3) 如果出现性能问题,要跟踪原因。生成trace文件进行分析,改进程序。
6.阅读下列说明,回答问题1至问题5。 【说明】