|
2012-1-23 答案BCD.
A: 会报如下错误:
PLS-00484: redundant exceptions 'MY_EXCEPTION' and 'MY_EXCEPTION' must appear in same exception handler
因为本地声明的my_exception和包里头定义的my_exception异常共享同一个错误代码(-1).
B: 用OR分隔多个异常的捕获,是有效的语法。当然此处有些不必要因为它们全部共享同一个错误代码(-1).
C,D: 虽然捕获异常名称和抛出异常名称不同,但由于它们共享同一个错误代码,仍然能够捕获。
===================================
2012-1-24 动态SQL中引用标识符
作者:Steven Feuerstein
难度:中
我定义了这个函数来动态获取一个标识符的日期值:
FUNCTION plch_date_value (identifier_in IN VARCHAR2) RETURN DATE
IS
l_value DATE;
BEGIN
EXECUTE IMMEDIATE
'BEGIN :actual_value := ' || identifier_in || '; END;'
USING OUT l_value;
RETURN l_value;
END;
下列哪些选项执行之后会显示"New Year"?
(A)
DECLARE
dt DATE := TO_DATE ('2009-01-01', 'YYYY-MM-DD');
BEGIN
IF TO_CHAR (plch_date_value ('dt'), 'MM-DD') = '01-01'
THEN
DBMS_OUTPUT.put_line ('New Year');
END IF;
END;
/
(B)
CREATE OR REPLACE PACKAGE plch_pkg
IS
dt DATE := TO_DATE ('2009-01-01', 'YYYY-MM-DD');
END;
/
BEGIN
IF TO_CHAR (plch_date_value ('plch_pkg.dt'), 'MM-DD') =
'01-01'
THEN
DBMS_OUTPUT.put_line ('New Year');
END IF;
END;
/
(C)
DECLARE
dt DATE := TO_DATE ('2009-01-01', 'YYYY-MM-DD');
BEGIN
IF TO_CHAR (plch_date_value (dt), 'MM-DD') = '01-01'
THEN
DBMS_OUTPUT.put_line ('New Year');
END IF;
END;
/
(D)
CREATE OR REPLACE PACKAGE plch_pkg
IS
FUNCTION dt
RETURN DATE;
END;
/
CREATE OR REPLACE PACKAGE BODY plch_pkg
IS
FUNCTION dt
RETURN DATE
IS
BEGIN
RETURN TO_DATE ('2009-01-01', 'YYYY-MM-DD');
END;
END;
/
BEGIN
IF TO_CHAR (plch_date_value ('plch_pkg.dt'), 'MM-DD') = '01-01'
THEN
DBMS_OUTPUT.put_line ('New Year');
END IF;
END;
/ |
|