|
最快答对的puber将获得彩蛋章一枚,其他会员如果提供有价值的分析、讨论也可获得彩蛋章一枚。
以往旧题索引:
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
难度:高
我创建了如下的日志表并填入数据:
CREATE TABLE plch_log
(
code NUMBER PRIMARY KEY
, text VARCHAR2 (4000)
, created_on DATE
, created_by VARCHAR2 (30)
)
/
BEGIN
INSERT INTO plch_log
VALUES (-1422
, 'Problem encountered'
, SYSDATE
, USER);
COMMIT;
END;
/
然后我创建了这个过程来管理表的内容:
CREATE OR REPLACE PROCEDURE plch_log_action (
action_in IN VARCHAR2
, code_in IN plch_log.code%TYPE DEFAULT NULL
, text_in IN plch_log.text%TYPE DEFAULT NULL)
IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
CASE action_in
WHEN 'DELETE'
THEN
DELETE FROM plch_log
WHERE code = code_in;
WHEN 'UPDATE'
THEN
UPDATE plch_log
SET code = code * 10
WHERE 1 = 2;
WHEN 'INSERT'
THEN
INSERT INTO plch_log
VALUES (code_in, text_in, SYSDATE, USER);
ELSE
NULL;
END CASE;
END;
/
哪些选项在执行之后屏幕上会显示 "Action completed" ?
(A)
BEGIN
plch_log_action ('DELETE', 1000);
DBMS_OUTPUT.put_line ('Action completed');
END;
/
(B)
BEGIN
plch_log_action ('DELETE', -1422);
DBMS_OUTPUT.put_line ('Action completed');
END;
/
(C)
BEGIN
plch_log_action ('UPDATE');
DBMS_OUTPUT.put_line ('Action completed');
END;
/
(D)
BEGIN
plch_log_action ('INSERT', 2000, 'Save it!');
DBMS_OUTPUT.put_line ('Action completed');
END;
/
(E)
BEGIN
plch_log_action ('MERGE'
, 2000
, 'Insert-Update Together');
DBMS_OUTPUT.put_line ('Action completed');
END;
/
|
|