Oracle数据库试题
更新时间:2024-06-06 05:05:01 阅读量: 综合文库 文档下载
constraint pk_spj primary key (sno,pno,jno),
constraint fk_spj_sno foreign key (sno) references s(sno), constraint fk_spj_pno foreign key (pno) references p(pno), constraint fk_spj_jno foreign key (jno) references j(jno) 实验二 游标和函数
1、定义一个游标完成显示所有供应商名。 declare
v_sname s.sname%type;
cursor cursor_sname is select sname from s; begin
for curso in cursor_sname loop
dbms_output.put_line(curso.sname); end loop; end;
2、定义、调用一个简单函数:查询返回指定供应商编号的供应商名及其供应零件总数量。 create or replace function fun(f_sno in s.sno%type,f_sname out s.sname%type) return number as f_qty number; begin
SELECT s.sname,sum(qty) into f_sname,f_qty from s,spj WHERE s.sno=spj.sno GROUP BY s.sname,spj.sno having spj.sno=f_sno; return f_qty; end; declare
v_sno s.sno%type:='&sno'; v_sname s.sname%type; v_qty spj.qty%type; begin
v_qty:=fun(v_sno,v_sname);
dbms_output.put_line(v_sname||v_qty); end;
3、定义一个函数:对于给定的供应商号,判断是否存在,若存在返回0,否则返回-1。写一段程序调用此函数,若供应商号存在则在spj插入一元组。
create or replace function fun1(f1_sno in s.sno%type) return number as a number; begin
select count(sno) into a from s where sno=f1_sno; if a=0 then return -1; else return 0; end if; end; declare
v_sno s.sno%type:='&sno'; begin
if fun1(v_sno)=0 then
insert into spj values(v_sno,'P4','J5',120); end if; end;
select *from spj where sno='S1';
4、定义、调用一个类似于SUM功能的函数:计算指定供应商编号的供应零件总数量。 create or replace function fsum(fs_sno in s.sno%type) return number as summ number;
cursor cursor_sno is select qty from s,spj where s.sno=fs_sno and spj.sno=s.sno ; begin summ:=0;
for curso in cursor_sno loop summ:=summ+curso.qty; end loop;
return summ; end; declare
v_sno s.sno%type:='&sno'; c number; begin
c:=fsum(v_sno); dbms_output.put_line(c);
end;
5、将题2中函数改用包定义。 create or replace package pack
Is function fun(f_sno in s.sno%type,f_sname out s.sname%type) return number; end;
create or replace package body pack Is
function fun(f_sno in s.sno%type,f_sname out s.sname%type)
return number as f_qty number; begin
SELECT s.sname,sum(qty) into f_sname,f_qty from s,spj WHERE s.sno=spj.sno GROUP BY s.sname,spj.sno having spj.sno=f_sno; return f_qty; end fun; end; declare
v_sno s.sno%type:='&sno'; v_sname s.sname%type; v_qty spj.qty%type; begin
v_qty:=pack.fun(v_sno,v_sname); dbms_output.put_line(v_sname||v_qty); end;
实验三 存储过程
1、定义、调用简单存储过程:计算所有供应商供应零件总数量并修改供应商相关列sqty。 create or replace procedure pro1 As p_qty number;
cursor cur1 is select sno,sum(qty) as p_qty from spj group by spj.sno; begin
for c in cur1 loop
update s set s.sqty=c.p_qty where sno=c.sno; end loop; end; begin
pro1; end;
2、定义、调用参数存储过程:查询返回指定供应商的供应零件总数量。比较与函数不同。 create or replace procedure pro2(p_sno in s.sno%type,p_qty out spj.qty%type) As begin
select sum(qty) into p_qty from spj WHERE spj.sno=p_sno GROUP BY spj.sno ; dbms_output.put_line('供应商'||p_sno||'的总数量为:'||p_qty); end; declare
v_sno s.sno%type:='&sno'; v_qty spj.qty%type; Begin
pro2(v_sno,v_qty); end;
3、定义、调用存储过程:插入一个供应商信息(所有信息由参数提供)。
create or replace procedure pro3(p_sno s.sno%type,p_sname s.sname%type,p_status s.status%type,p_city s.city%type) As cout number; begin
select count(*) into cout from s where s.sno=p_sno; if cout>0 then
dbms_output.put_line('编号为'||p_sno||'的供应商已存在!'); elsif cout=0 then
insert into s(sno,sname,status,city) values(p_sno,p_sname,p_status,p_city); dbms_output.put_line('插入成功!');
else dbms_output.put_line('出现其它错误!'); end if; end; declare
v_sno s.sno%type:='&sno'; v_sname s.sname%type:='&sname; v_status s.status%type:='&status'; v_city s.city%type:='&city'; begin
pro3(v_sno,v_sname,v_status,v_city); end; select *from s;
4、定义、调用存储过程:删除指定代码的零件信息,并给出删除元组数。 create or replace procedure pro4(p_pno in p.pno%type,p_cut out number) As begin
delete from spj where spj.pno=p_pno; delete from p where pno=p_pno; p_cut:=SQL%ROWCOUNT;
dbms_output.put_line('已经删除'||p_cut||'行'); end; declare
v_pno p.pno%type:='&pno'; v_cut number; begin
pro4(v_pno,v_cut); end;
5、定义、调用存储过程:修改指定代码项目的其它信息(所有信息由参数提供)。 create or replace procedure pro5(p_jno in j.jno%type,p_jname j.jname%type,p_city j.city%type) As p_cout number; begin
select count(*) into p_cout from j where jno=p_jno; if p_cout=0 then
dbms_output.put_line('编号'||p_jno||'的项目不存在');
else update j set jname=p_jname,city=p_city where jno=p_jno; dbms_output.put_line('修改成功!'); end if; end; declare
v_jno j.jno%type:='&jno'; v_jname j.jname%type:='&jname';
5、将数据增加到1万以上,在spj定义包括sno、pno、jno索引,对同一查询观察前后的时间变化。
create index idx_spj1 on spj1(sno,pno,jno); begin
for i in 1..10000 loop
insert into spj1 values(i,i,i,i); end loop; end; select *from spj1;
select *from spj1 where sno=10000;
正在阅读:
Oracle数据库试题06-06
高中语文必修三复习05-13
2017中石油工业安全技术在线考试05-02
青少年毒品预防教育教学案例08-07
The libido for the ugly 课文翻译11-04
新视野大学英语第四册教案10-12
六一儿童节活动总结12篇04-03
管理会计习题集(修改后)04-06
化学实验操作考试评分细则05-03
稀浆封层技术在公路养护中的应用12-02
- 二年级下册音乐测试题
- 浙江财经大学中微题库答案
- 小升初常考古诗填空练习(80首古诗 含答案)
- 全国导基 第十章 中国旅游诗词、楹联、游记鉴赏 练习题 及答案
- 华师大版七年级科学(生物)下册5.1《种群和群落》导学案(含答
- 人教版七年级语文上册练习:《我的老师》课时训练(附答案)-精
- NOIP2015浙江省复赛普及组成绩
- 长虹公司的应收账款管理
- 快递行业同业竞争对手调查报告
- “十三五”重点项目-牦牛骨髓粉项目节能评估报告(节能专篇)
- 钢结构生产制造部各岗位职责及任职要求
- 对H企业应收账款管理与核算现状的调查报告
- 中国化学会第24届全国高中学生化学竞赛(省级赛区)试题、标准答
- 本科成本会计
- “众包”创新模式在我国潜在的风险的探讨
- 语文基础全套复习资料(有他足够了
- 中外合作出版合同(1)
- STM32-GPIO及EXTI初始化详解
- 2018年中国控制技术市场现状调研与发展前景分析报告目录
- 大学物理试题第四章 冲量和动量
- 试题
- 数据库
- Oracle
- 作业许可考试试题及答案
- 选美大赛分赛区指导手册
- 天宝TSC3操作步骤
- 低空观光旅游直升机如何选择!
- 执行依据的审查与处理
- 完整的工程结算单书(市政)
- Linux设备驱动之pci设备的枚举
- 高毒物品作业岗位职业病规范 - 图文
- 三年级下册语文单元测试题-第4单元丨语文A版含答案
- 发动机进气压力的测试与平衡
- 第2章 数据的机器层次表示单元测试题
- Oracle EBS Form个性化
- 不锈钢工艺品项目可行性研究报告(目录)
- 函授统考英语写作题库(大学英语B)
- 中央电大汉语言专科《中国当代文学》期末考试题库
- 09级高一下学期第一次月考数学试题
- 市局学习材料汇编
- 三上易错题3
- 东杨楼消 - 防 - 安 - 全 - 演 - 练 - 总 - 结
- 铜川市新区2015年巩固退耕还林成果基本口粮田建设项目