(原发表于 2011-6-3)
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
每两周的优胜者可获得itpub奖励的技术图书一本。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
哪些选项包含的代码块在执行之后会显示如下文本?
opened
opened already
(A)
DECLARE
CURSOR cur
IS
SELECT * FROM DUAL;
PROCEDURE show_isopen
IS
BEGIN
IF cur%ISOPEN
THEN
DBMS_OUTPUT.put_line ('opened already');
ELSE
OPEN cur;
DBMS_OUTPUT.put_line ('opened');
END IF;
END show_isopen;
BEGIN
show_isopen;
show_isopen;
END;
/
(B)
DECLARE
PROCEDURE show_isopen
IS
CURSOR cur
IS
SELECT * FROM DUAL;
BEGIN
IF cur%ISOPEN
THEN
DBMS_OUTPUT.put_line ('opened already');
ELSE
OPEN cur;
DBMS_OUTPUT.put_line ('opened');
END IF;
END show_isopen;
BEGIN
show_isopen;
show_isopen;
END;
/
(C)
DECLARE
cur SYS_REFCURSOR;
PROCEDURE show_isopen
IS
BEGIN
IF cur%ISOPEN
THEN
DBMS_OUTPUT.put_line ('opened already');
ELSE
OPEN cur FOR 'SELECT * FROM sys.DUAL';
DBMS_OUTPUT.put_line ('opened');
END IF;
END show_isopen;
BEGIN
show_isopen;
show_isopen;
END;
/
(D)
DECLARE
PROCEDURE show_isopen
IS
cur SYS_REFCURSOR;
BEGIN
IF cur%ISOPEN
THEN
DBMS_OUTPUT.put_line ('opened already');
ELSE
OPEN cur FOR 'SELECT * FROM sys.DUAL';
DBMS_OUTPUT.put_line ('opened');
END IF;
END show_isopen;
BEGIN
show_isopen;
show_isopen;
END;
/