|
2011-12-7 答案AC.
A: 这是因为第一个SELECT的输出为2. 当data_level>0时,表示该参数(返回值)在类型中的层数,只有复合类型或OBJECT TYPE会超过1
B: 没有道理一定是PLCH_TAB%ROWTYPE。其实PLCH_TAB表在这道题中一点用处都没有。
C: 这是因为第二个SELECT的输出为2. 当position=0, 表示这是一个函数的返回值。
D: 这个无法推断,字段OVERLOAD才是是否指明重载。第三个SELECT只是告诉我们至少有两个子程序。
=================================================
2011-12-8
作者:Steven Feuerstein
难度:高
我创建了如下的表并填入数据:
CREATE TABLE plch_tab (n NUMBER)
/
BEGIN
INSERT INTO plch_tab VALUES (1);
INSERT INTO plch_tab VALUES (2);
INSERT INTO plch_tab VALUES (3);
END;
/
然后我创建了这个过程:
CREATE OR REPLACE PROCEDURE plch_execute (string_in IN VARCHAR2)
IS
l_cursor PLS_INTEGER := DBMS_SQL.open_cursor ();
l_feedback PLS_INTEGER;
BEGIN
DBMS_SQL.parse (l_cursor, string_in, DBMS_SQL.native);
l_feedback := DBMS_SQL.execute (l_cursor);
DBMS_OUTPUT.put_line ('Result=' || l_feedback);
END;
/
哪些选项在执行之后会输出"Result=1"?
(A)
BEGIN
plch_execute ('update plch_tab set n = n * 10 where n = 1');
END;
/
(B)
BEGIN
plch_execute ('create table plch_tab2 (n number)');
END;
/
(C)
BEGIN
plch_execute ('select n from plch_tab where n = 2');
END;
/
(D)
BEGIN
plch_execute ('update plch_tab set n = n * 10');
END;
/ |
|