




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 创建用户kaifa(密码亦为kaifa), 并分配connect,create table,resource权限。CREATE user KAIFA IDENTIFIED BY KAIFA DEFAULT TABLESPACE HOSDATATEMPOARY TABLESPACE TEMPDATA;GRANT CONNECT , CREATE TABLE , RESOURCE TO KAIFA2 在做报表统计时,需要根据报表日期和币种从概要表中查询本期余额。概要表(CCB_GYB)信息如下:ACCOUNTING_DATEDATE报表日期(唯一索引)RMB_YTD_BALANCENUMBER人民币余额CNY_YTD_BALANCENUMBER本位币余额USD_YTD_BALANCENUMBER外币折美元余额其中币种代码如下: -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 NUMBERIS VAMOUNT NUMBER ;VDATE Date;BEGINSELECT ACCOUNTING_DATE INTO VDATE FROM CCB_GYBWhere ACCOUNTING_DATE = Vqrp_rq;IF Vqrp_code = RMB THEN SELECT RMB_YTD_BALANCE INTO VAMOUNT FROM CCB_GYB WHERE Vqrp_code= RMBAND 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)要求统计分数段的人数。显示结果为:成绩 人数0成绩60 0 60成绩80 0 80成绩100 5 CREATE 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成绩60| |VCOUNT1); dbms_output.put_line (60成绩80| | VCOUNT2); dbms_output.put_line (81成绩100| | VCOUNT3); End;(2)要求根据姓名,把各科成绩显示在一条记录里。显示结果如下:姓名 语文 数学 英语 总成绩- - - - -李四 78 85 78 241张三 80 86 75 241总分 158 171 153482 (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=英语)DGroup 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=英语) DGroup 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 CJGroup By SNAMEUnion AllSelect 总分 ,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客户IDVARCHAR2(20)(唯一键)BIRTHDATE出生日期DateGENDER性别VARCHAR2(10)SALARY月收入NUMBER(10,2)CERT-TYPE证件类型VARCHAR2(10)CERT-NO证件号码VARCHAR2(20)CREATED-TS进入系统的时间TIMESTAMP现要把该表数据导出成文件,导出的内容格式如下:属性列列长度备注INDIVIDUALID20BIRTHDATE8格式为:yyyymmddGENDER10SALARY13CERT-TYPE10CERT-NO20CREATED-TS17格式为: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_infoMOBILE_ID移动号码VARCHAR2(12) CALLIN_TIME呼入时间DateCALLOUT_TIME呼出时间DateSTATUS状态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分)Create Table 部门(部门号 CHAR(1) (a) ,部门名 CHAR(16),负责人代码 CHAR(4),任职时间 DATE,(b) (职工号));Create Table 职工(职工号 CHAR(4),姓名 CHAR(8),年龄 NUMDER(3),月工资 NUMDER(4),部门号 CHAR(1),电话 CHAR(8),办公室 CHAR(8),(a) (职工号),(c) (部门号),CHECK( (d) );Create View D_S(D,C,Totals,Averages) As(Select 部门号, (e) from 职工(f) ;【问题】 对于表2-2、表2-3所示的“职工”和“部门”关系,请指出下列各行是否可以插入,为什么?(3分) (1) 1001 王新军 28 1000 1 8001234 主楼201 (2) 2003 李 力 28 1000 (3) 5802 赵晓啸 36 1500 6 8001568 3号楼503【问题3】 在问题1定义的视图D_S上,下面哪个查询或更新是允许执行的,为什么?(3分) (1) Update D_S set D=3 where D=4; (2) Delete from D_S where C4; (3) Select D,Averages from D_Swhere C(Select C from D_S where D=:dept); (4) Select D,C from D_Swhere Totals10000; (5) Select * from D_S;【问题】 查询每个部门中月工资最高的“职工号”的SQL查询语句如下:Select 职工号 from 职工 EWhere 月工资=(Sel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版卫星通信系统建设项目合同
- 2025版工业自动化控制系统设备监造与维护合同
- 2025年度网络安全产品保密协议范本
- 2025建筑工程劳务合同样本
- 2025年私人住宅渗水修复合同协议
- 2025企业合同管理指南合同履行与监督实施细则文档模板
- 语文专业知识培训心得
- 红色船员基础知识培训课件
- 红色家书课件带稿
- 企业资产保理融资合同
- GB/T 5907.4-2015消防词汇第4部分:火灾调查
- GB 31701-2015婴幼儿及儿童纺织产品安全技术规范
- 健身理论与指导课件讲义
- 浙江省科学作业本2022版四年级上册作业本参考答案
- 2023年中远海运船员管理有限公司招聘笔试题库及答案解析
- 美国共同基金SmartBeta布局及借鉴
- 企业劳动用工法律风险与防范
- 普通逻辑ppt课件(完整版)
- 2022年08月安徽省芜湖市招考大学生科技特派员岗位冲刺题(带答案)
- 国家城镇救援队伍能力建设与分级测评指南
- DB32∕T 4065-2021 建筑幕墙工程技术标准
评论
0/150
提交评论