📄 作业_getbookname_answer.txt
字号:
--基本表结构
--图书
create table book (
isbn char(13),--ISBN号
name varchar2(20),
zuozhe varchar2(40), --考虑合著
price number(6,2),
publisher varchar2(30),
shuliang number(8,0),
publishdate date);
--建立定购表
create table booked(
isbn char(13),
benshu number(3,0),
uername varchar2(20));
--参见 综合练习2.txt
create or replace procedure getbookname
(p_isbn in char) is
--loacal 变量
v_name book.name%TYPE;--用type方法声明变量
v_price number;
begin
select name,price into v_name,v_price from book
where isbn = p_isbn;
dbms_output.put_line('ISBN : ' || p_isbn);
dbms_output.put_line('书名 : ' || v_name);
dbms_output.put_line('售价 : ' || v_price);
end;
----改进1。企图判断有无此isbn:失败!
create or replace procedure getbookname
(p_isbn in char) is
--loacal 变量
v_name book.name%TYPE;--用type方法声明变量
v_price number;
begin
select name,price into v_name,v_price from book
where isbn = p_isbn;
if v_price is null then
dbms_output.put_line('没有这本书!');
--当没有输入的isbn,总无法输出这句话.
--因为select into 要求必须有并且只有一条记录,返回0条2条,都出错.
--跳过其他语句 ,直接end.
--怎么办?必须保证有并且只有一条记录.先count(*) where isbn=p_isbn;
--count(*)总返回一条记录.0,1.因为isbn为pk.
else
dbms_output.put_line('ISBN : ' || p_isbn);
dbms_output.put_line('书名 : ' || v_name);
dbms_output.put_line('售价 : ' || v_price);
end if;
end;
select count(*) from sm_emp where empid='a';
--返回0.一条记录。select count(*) into var.. where empid='a'。正确有且只有一条纪录。
select * from sm_emp where empid='a';
--空集。所以,select empid into var.. where empid='a'将发生错误。
----改进2:count(*)总返回一条记录.0,1.因为isbn为pk.只判断是否=0就可
create or replace procedure getbookname
(p_isbn in char) is
--loacal 变量
v_name book.name%TYPE;--用type方法声明变量
v_price number;
v_book number:=0; --判断有几条纪录
begin
select count(*) into v_book from book where isbn=p_isbn; --有无此书
if v_book =0 then
dbms_output.put_line('sorry 。没有此书号的图书');
else
--找到图书
select name,price into v_name,v_price from book
where isbn = p_isbn;
dbms_output.put_line('ISBN : ' || p_isbn);
dbms_output.put_line('书名 : ' || v_name);
dbms_output.put_line('售价 : ' || v_price);
end if;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -