oracle存储过程练习题Word格式.docx
- 文档编号:17460327
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:9
- 大小:304.55KB
oracle存储过程练习题Word格式.docx
《oracle存储过程练习题Word格式.docx》由会员分享,可在线阅读,更多相关《oracle存储过程练习题Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
--USD外币折美元
CREATEORREPLACEProcedureSCOUNT
Is
VCOUNT1Varchar2(10);
VCOUNT2Varchar2(10);
VCOUNT3Varchar2(10);
Begin
SelectCount(*)IntoVCOUNT1FromCJWhereSCOREBetween0And60;
SelectCount(*)IntoVCOUNT2FromCJWhereSCOREBetween61And80;
SelectCount(*)IntoVCOUNT3FromCJWhereSCOREBetween81And100;
dbms_output.put_line('
分数'
||‘‘||‘人数’);
dbms_output.put_line('
0<
成绩<
60'
||‘‘||VCOUNT1);
60<
80'
||‘‘||VCOUNT2);
81<
100'
||‘‘||VCOUNT3);
End;
(2)要求根据姓名,把各科成绩显示在一条记录里。
显示结果如下:
姓名
语文
数学
英语
总成绩
--------------------------------------------------
李四
78
85
241
张三
80
86
75
总分
158
171
153
482
(SelectD.SSNAME,D.SSOCRE数学,D.YSCORE语文,D.ESCORE英语,Sum(D.SSOCRE+D.YSCORE+D.ESCORE)总成绩From
(SelectA.SNAMESSNAME,A.SCORESSOCRE,B.SCOREYSCORE,C.SCOREESCOREFromCJA,CJB,CJCWhereA.SNAME=B.SNAME
AndC.SNAME=A.SNAMEAndA.XK='
语文'
AndB.XK='
数学'
AndC.XK='
英语'
)D
GroupByD.SSNAME,D.SSOCRE,D.YSCORE,D.ESCORE
)
UnionAll
(Select'
总分'
姓名,Sum(FF.BB)数学,Sum(FF.CC)语文,Sum(FF.DD)英语,Sum(FF.EE)总成绩From
(SelectD.SSNAMEAA,D.SSOCREBB,D.YSCORECC,D.ESCOREDD,Sum(D.SSOCRE+D.YSCORE+D.ESCORE)EEFrom
)D
)FF)
行转列
SelectSNAME,SUM(DECODE(XK,'
SCORE,0))语文,Sum(DECODE(XK,'
SCORE,0))数学,Sum(DECODE(XK,'
SCORE,0))英语,SUM(SCORE)AAFromCJ
GroupBySNAME
Select'
Sum(DECODE(XK,'
SCORE,0))英语,SUM(SCORE)FromCJ
使用SQL语句或存储过程(显示结果时可用dbms_output打印出来)实现这两个功能。
DBMS_OUTPUT.PUT_LINE(‘姓名’‘语文’‘数学’‘英语’‘总成绩’)
3.某一客户表包含如下信息:
INDIVIDUALID
客户ID
VARCHAR2(20)(唯一键)
BIRTHDATE
出生日期
Date
GENDER
性别
VARCHAR2(10)
SALARY
月收入
NUMBER(10,2)
CERT-TYPE
证件类型
CERT-NO
证件号码
VARCHAR2(20)
CREATED-TS
进入系统的时间
TIMESTAMP
现要把该表数据导出成文件,导出的内容格式如下:
属性列
列长度
备注
20
8
格式为:
yyyymmdd
10
13
17
yyyymmddhh24missff3
要求每个字段列的内容长度是固定的,不足部分由空格补齐,字符串左对齐(右补空格),数字右对齐。
如果列的内容为null,需先进行处理,字符串默认为空格,数字默认为0,日期默认为99991231,时间戳默认为99991231000000000。
请编写程序实现该导出功能。
创建表脚本:
createtabletb1010(
INDIVIDUALIDVARCHAR2(20),
BIRTHDATEdate,
GENDERVARCHAR2(10),
SALARYNUMBER(10,2),
CERT_TYPEVARCHAR2(10),
CERT_NOVARCHAR2(20),
CREATED_TSTIMESTAMP
);
4.某语音电话本表信息如下:
Call_book_info
MOBILE_ID
移动号码
VARCHAR2(12)
CALLIN_TIME
呼入时间
CALLOUT_TIME
呼出时间
STATUS
状态
CHAR
(1)
在某次大批量操作后,数据记录达到100万,MOBILE_ID估计有2万个重复,现要求删除重复的号码(只保留一条),因为该表是业务表,删除时不能影响业务的正常使用。
编写存储过程实现删除重复号码的功能。
要求如下:
(1)为保证删除的数据以后可查,在删除时要先做备份,备份不成功则不能进行删除。
(2)要有日志记录,比如删除所花时间,删除成功了多少条,失败多少条等操作信息。
(3)如果出现性能问题,要跟踪原因。
生成trace文件进行分析,改进程序。
6.阅读下列说明,回答问题1至问题5。
【说明】
某工厂的信息管理数据库的部分关系模式如下所示:
职工(职工号,姓名,年龄,月工资,部门号,电话,办公室)
部门(部门号,部门名,负责人代码,任职时间)
关系模式的主要属性、含义及约束如表2-1所示,“职工”和“部门”的关系示例分别如表2-2和表2-3所示。
表2-1主要属性、含义及约束
表2-2“职工”关系
表2-3“部门”关系
【问题1】
根据上述说明,由SQL定义的“职工”和“部门”的关系模式,以及统计各部门的人数C、工资总数Totals、平均工资Averages的D_S视图如下所示,请在空缺处填入正确的内容。
(6分)
CreateTable部门(部门号CHAR
(1)(a),
部门名CHAR(16),
负责人代码CHAR(4),
任职时间DATE,
(b)(职工号));
CreateTable职工(职工号CHAR(4),
姓名CHAR(8),
年龄NUMDER(3),
月工资NUMDER(4),
部门号CHAR
(1),
电话CHAR(8),
办公室CHAR(8),
(a)(职工号),
(c)(部门号),
CHECK((d)));
CreateViewD_S(D,C,Totals,Averages)As
(Select部门号,(e)
from职工
(f);
【问题2】
对于表2-2、表2-3所示的“职工”和“部门”关系,请指出下列各行是否可以插入,为什么?
(3分)
(1)1001王新军28100018001234主楼201
(2)2003李力281000
(3)5802赵晓啸361500680015683号楼503
【问题3】
在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?
(3分)
(1)UpdateD_SsetD=3whereD=4;
(2)DeletefromD_SwhereC>4;
(3)SelectD,AveragesfromD_S
whereC>(SelectCfromD_SwhereD=:
dept);
(4)SelectD,CfromD_S
whereTotals>10000;
(5)Select*fromD_S;
【问题4】
查询每个部门中月工资最高的“职工号”的SQL查询语句如下:
Select职工号from职工E
Where月工资=(SelectMax(月工资)
from职工asM
whereM.部门号=E.部门号)
(1)请用30字以内文字简要说明该查询语句对查询效率的影响。
(2)对该查询语句进行修改,使它既可以完成相同功能,又可以提高查询效率。
【问题5】
假定分别在“职工”关系中的“年龄”和“月工资”字段上创建了索引,如下的Select查询语句可能不会促使查询优化器使用索引,从而降低查询效率,请写出既可以完成相同功能又可以提高查询效率的SQL语句(2分)
Select姓名,年龄,月工资from职工
where年龄>45or月工资<1000;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- oracle 存储 过程 练习题