最近学习了下存储过程,在网上搜索到一些关于存储过程的题目,并尝试做出了解答,下面将这些解答写下来有两个目的:
1.方便自己以后查阅和体会。
2.希望某些高手能指出解答不够好的地方加以指正,共同探讨进步
不定期更新中。下面开始
1.有一张公司员工表MEMBER,有2个字段ID(唯一标示),core_id(员工工号),由于设计的失误导致很多员工的员工编号重复了,请写出一段存储过程来解决这个问题。
解答:
create or replace procedure update_core_id(message out varchar2) is
e_id member.id%type;
e_sql varchar2(1000);
cursor cs_id
is
select id from member s where s.core_id in(select t.core_id from member t group by t.core_id having count(t.core_id)>1);
begin
open cs_id;
loop
fetch cs_id into e_id;
exit when cs_id%Notfound;
e_sql:='update member s set s.core_id=(select max(core_id)+1 from member) where s.id='||e_id;
DBMS_OUTPUT.put_line(e_id);
execute immediate e_sql;
end loop;
commit;
message:='已经输出SQL语句,并执行了对应的SQL,请检查是否正确';
close cs_id;
Exception
when others then
message:='出现异常了';
rollback;
end update_core_id;
2.创建一个存储过程P1,要求执行改存储过程能够返回考生数据表(tblkaosheng)
中bmdwdm(报名单位代码)为100,130,500,830,2920,2490的考生的zkzh(准考证号),(xm)姓名和kscj(考试成绩)结果集,并且该结果集要按照bmdwdm(报名单位代码)
和准考证号升序排列
解答:
2种方式实现:
A.使用sys_refcursor
create or replace procedure GET_XS_KSQK(resultXS out sys_refcursor) is
begin
open resultXS for
select tl.zkzh,tl.xm,kscj from tblkaosheng tl
where tl.bmdwdm = '100' or tl.bmdwdm='130' or
tl.bmdwdm = '500' or tl.bmdwdm='830' or
tl.bmdwdm = '2920' or tl.bmdwdm='2490'
order by tl.bmdwdm,tl.zkzh;
end GET_XS_KSQK;
B.package中定义游标
create or replace package ref_xs is
type ref_xs_cursor is ref cursor;
end ref_xs;
create or replace procedure GET_XS_KSQK_PACK(resultxs out ref_xs.ref_xs_cursor) is
begin
open resultxs for
select tl.zkzh,tl.xm,kscj from tblkaosheng tl
where tl.bmdwdm = '100' or tl.bmdwdm='130' or
tl.bmdwdm = '500' or tl.bmdwdm='830' or
tl.bmdwdm = '2920' or tl.bmdwdm='2490'
order by tl.bmdwdm,tl.zkzh;
end GET_XS_KSQK_PACK;
另外该题目还可以用定义function来实现,也可以将procedure或function写在packagebody中来实现
分享到:
相关推荐
3.3.4 存储存储过程 3.4 管理存储过程 3.4.1 列举存储过程 3.4.2 查看存储过程 3.4.3 重命名存储过程 3.4.4 删除存储过程 3.4.5 查看相关和有依赖关系的对象 3.5 存储过程在数据库应用开发中的作用 3.5.1 增强数据...
第1章 简介 1.1 谁是本书的读者 1.2 本书的内容 1.3 需求 1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和可靠性 1.4.3 改进了开发和管理环境 1.5 样本数据库 1.5.1 样本数据库安装 ...
希望老师解答~ (1)统计离散数学成绩分布 CREATE TABLE SCC( Grades CHAR(5), Num INT ) --存人数 INSERT INTO SCC(Grades,Num) VALUES('>90',0); INSERT INTO SCC(Grades,Num) VALUES('>80',0); ...
ASP技术问题解答,希望对你有帮助。
【资源介绍】:SQL分页存储过程 【备注】: 亲爱的下载用户: 谢谢您光临CSDN阿Q资源中心! 本中心发布的资源均是经过本人测试通过后才发布的,请放心下载。如果您有不清楚的问题或者建议,请您通过...
ASP技术问题解答,希望对你有帮助。
高效率存储过程分页。里面附有实例,如果还不明白,里面有我的联系QQ。加QQ可以为您解答。
安信达 电子硬盘(IDE DOM/SATA DOM)使用过程中问题解答pdf,安信达 电子硬盘(IDE DOM/SATA DOM)使用过程中问题解答
* 堆栈模拟是计算机系统中的一种存储结构,用于模拟程序的执行过程。 * 堆栈模拟可以用于评估计算机系统的性能。 3.19 中(3)(4)(6)(8):地址映象/替换算法 * 地址映象是计算机系统中的一种存储结构,用于...
数据库系统原理习题解答 数据库系统原理习题解答全文共20页,当前为第1页。数据库系统原理习题解答全文共20页,当前为第1页。数据库系统原理习题解答 数据库系统原理习题解答全文共20页,当前为第1页。 数据库系统...
软件工程作业解答 习题一 5、(1)在1985年对计算机存储容量的需求,估计是 如果字长为16位,则这个存储器的价格是 (2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 在1985年一名程序员每天可...
H3C 服务器 存储控制卡用户指南各章节内容如下: • 第 1 章 存储控制卡。介绍存储控制卡的基本信息...介绍存储控制卡使用过程中的常见问题解答。 • 第 9 章 硬盘阵列和容错方法。介绍 RAID 的基本原理及 RAID 级别。
(1)什么是递归?递归程序有什么优缺点? 【解答】直接或间接调用自身的程序称为递归程序。 递归是一种特殊的嵌套调用,是一个过程或函数直接或间接调用自身的一种方法,是某个函数调用自 己,而不是另外一个函数。...
1 变量存储在内存(memory)中的什么地方? 2. 2 变量必须初始化吗? 2. 3 什么是页抖动(pagethrashing)? 2. 4 什么是const指针? 2. 5 什么时候应该使用register修饰符?它真的有用吗? 2. 6 什么时候应该使用...
有任何问题也可以随时私信博主,博主会第一时间给您解答!!! 本资源中的源码都是经过本地编译过可运行的,下载后按照文档配置好环境就可以运行。资源项目的难度比较适中,内容都是经过助教老师审定过的,应该能够...
3.3(存储层次性能),3.5(并行主存系统),3.15-3.15加1题(堆栈模拟),3.19中(3)(4)(6)(8)问(地址映象/替换算法--实存状况图) 第四章(P250) 4.5(中断屏蔽字表/中断过程示意图),4.8(通道流量计算/通道时间...
5. 存储程序计算机:存储程序计算机是使用存储程序原理,将程序和数据存放在同一存储器中。 6. 并行性、时间重叠和资源重复:并行性是指在同一时刻或同一时间间隔内完成两种或两种以上性质相同或不同的工作。时间...
3.3(存储层次性能),3.5(并行主存系统),3.15-3.15加1题(堆栈模拟),3.19中(3)(4)(6)(8)问(地址映象/替换算法--实存状况图) 第四章(P250) 4.5(中断屏蔽字表/中断过程示意图),4.8(通道流量计算/通道时间...