最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我创建了两张表并填入数据:
CREATE TABLE plch_mammals
(
the_name VARCHAR2 (100) PRIMARY KEY,
gives_birth_in_water CHAR (1)
)
/
CREATE TABLE plch_food
(
mammal_name VARCHAR2 (100)
REFERENCES plch_mammals (the_name),
yum_yum VARCHAR2 (100)
)
/
BEGIN
INSERT INTO plch_mammals VALUES ('Squirrel', 'N');
INSERT INTO plch_mammals VALUES ('Whale', 'Y');
INSERT INTO plch_mammals VALUES ('Hippopotamus', 'Y');
INSERT INTO plch_food VALUES ('Squirrel', 'Acorn');
INSERT INTO plch_food VALUES ('Whale', 'Plankton');
INSERT INTO plch_food VALUES ('Hippopotamus', 'Grass');
COMMIT;
END;
/
哪些选项执行之后不会显示"All done"?
(A)
BEGIN
DELETE FROM plch_food
WHERE yum_yum = 'Grass';
DELETE FROM plch_mammals
WHERE the_name = 'Whale';
DBMS_OUTPUT.put_line ('All done');
END;
/
(B)
BEGIN
BEGIN
DELETE FROM plch_food
WHERE yum_yum = 'Grass';
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Still have grass');
END;
BEGIN
DELETE FROM plch_mammals
WHERE the_name = 'Whale';
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Whales endangered');
END;
DBMS_OUTPUT.put_line ('All done');
END;
/
(C)
DECLARE
l_next_step VARCHAR2 (5);
BEGIN
l_next_step := 'Whale';
DELETE FROM plch_food
WHERE yum_yum = 'Grass';
<>
DELETE FROM plch_mammals
WHERE the_name = 'Whale';
DBMS_OUTPUT.put_line ('All done');
EXCEPTION
WHEN OTHERS
THEN
GOTO l_next_step;
END;
/
(D)
DECLARE
l_next_step VARCHAR2 (5);
BEGIN
l_next_step := 'Whale';
DELETE FROM plch_food
WHERE yum_yum = 'Grass';
<>
l_next_step := 'Done';
DELETE FROM plch_mammals
WHERE the_name = 'Whale';
<>
DBMS_OUTPUT.put_line ('All done');
EXCEPTION
WHEN OTHERS
THEN
CASE l_next_step
WHEN 'Whale'
THEN
GOTO whale;
WHEN 'Done'
THEN
GOTO done;
END CASE;
END;
/
(E)
BEGIN
BEGIN
DELETE FROM plch_food
WHERE yum_yum = 'Grass';
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END;
BEGIN
DELETE FROM plch_mammals
WHERE the_name = 'Whale';
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END;
DBMS_OUTPUT.put_line ('All done');
END;
/