千家信息网

2011-11-8 包变量的初始化

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,http://www.itpub.net/thread-1499223-12-1.html119楼执行下列语句之后,我的屏幕上会显示什么?CREATE OR REPLACE PACKAGE plch_
千家信息网最后更新 2024年11月11日2011-11-8 包变量的初始化

http://www.itpub.net/thread-1499223-12-1.html

119楼

执行下列语句之后,我的屏幕上会显示什么?

CREATE OR REPLACE PACKAGE plch_pkgIS   g_public   NUMBER := 1;   PROCEDURE do_stuff;   FUNCTION get_stuff      RETURN NUMBER;END;/CREATE OR REPLACE PACKAGE BODY plch_pkgIS   PROCEDURE do_stuff   IS   BEGIN      DBMS_OUTPUT.put_line (g_public);   END;   FUNCTION get_stuff      RETURN NUMBER   IS   BEGIN      do_stuff;      RETURN g_public + 1;   END;BEGIN   DBMS_OUTPUT.put_line (g_public);   g_public := 2;END;/BEGIN   DBMS_OUTPUT.put_line (plch_pkg.get_stuff);   plch_pkg.g_public := plch_pkg.get_stuff;   DBMS_OUTPUT.put_line (plch_pkg.get_stuff);END;/

(A)

1

(B)

12

(C)

123

(D)

1234

(E)

12334

(F)

123234

实测答案为F

SQL> Package createdPackage body created123234PL/SQL procedure successfully completedSQL>

答案说明在125楼

2011-11-8 答案F.

包头声明的初始值先于包体。包体第一次被调用时会执行初始化代码,因而将包头里面的初始值覆盖了。

0