ORACLE考试例题

表book和表author,结构如下:Book:

(bookid char(6)主键,bookname varchar(30),price float(5,2))

Author:

(authorid char(6),authorname varchar(10),bookid char(6), BZ clob)

1.根据表结构,创建Book表和Author表。 

2.分别向Book表和Author表分别插入以下两行数据。

4734df6ee79b4652b79939345b1d349a.png

9cda7a258cf54a0994ca5c721101faae.png  

3.修改Author表的bookid为外键关联Book表的bookid字段。

4.创建一个存储过程,实现计算Book表中price的平均价格,并调用该函数。

5.创建一个函数,实现根据书名查询书的价格。

6.向Author表中authorname为‘凡尔纳’的BZ字段添加数据‘科幻小说之父’。

 

第一题代码:

--创建book表

create table book(
  bookid char(6) primary key,
  bookname varchar(30),
  price number(5,2));


--创建author表


create table Author(
  authorid char(6),
  authorname varchar(10),
  bookid char(6),
  BZ clob
);

第二题插入代码:

--book数据

insert into Book values('001','老人与海',38.8);
insert into Book values('002','海底两万里',49.2);

--author表数据
insert into Author values('202001','海明威','001','美国作家,1899年-1961年,诺贝尔文学奖获得者。');
insert into Author values('202002','凡尔纳','002','法国小说家,1828年-1905年,');

第三题添加外键关联:

alter table Author add constraint bkid_con foreign key (bookid) references Book(bookid); 

第四题创建存储过程

set serveroutput on;
create or replace procedure pri_name
is
  avg_pri book.price%type;
begin
  select avg(price) into avg_pri from book;
  dbms_output.put_line('平均价格为:'||avg_pri);
end;
/ 

--调用
execute pri_name;

运行结果:

b55acaf819c04e67afde260b699fd886.png

第五题函数:

set serveroutput on;
create or replace function func_pri(b_name in book.bookname%type)return number
is pri number(5,2);    --创建函数func_pri,变量b_name接收从外界输入的书名,pri变量保存函数的返回值
begin 
select price into pri from book where bookname=b_name;
return pri;
end;
/

--调用
declare
  v_name book.bookname%type:='&书名';   --从外界输入书名
begin
  dbms_output.put_line('价格为:'||func_pri(v_name));
end;
/

14e8d087256e4c26887242fbe4625227.png

 

9a6c50848f984d4db3f759705f772108.png

第六题添加字段:

set serveroutput on;
declare
  var_lob clob;   --被写入的LOB
  var_length number;   --写入的长度
  var_start number;    --写入的起始位置
  var_return varchar2(100);    --写入的LOB数据
begin
  var_return:='科幻小说之父';
  var_length:=length(var_return);
  var_start:=19;    --现有数据:法国小说家,1828年-1905年,
  select BZ into var_lob from author where authorname='凡尔纳' for update;
  DBMS_LOB.write(var_lob,var_length,var_start,var_return);
  dbms_output.put_line(var_lob);
  commit;
end;
/


--验证
select BZ from author;

f3e928f5abd943ceb49d62cac166b527.png

以上代码均为PL SQL语句,使用SQL Developer工具编写,若有错误,欢迎提出!

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_59627358

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值