2011-11-8 包变量的初始化
http://www.itpub.net/thread-1499223-12-1.html
119楼
执行下列语句之后,我的屏幕上会显示什么?
CREATEORREPLACEPACKAGEplch_pkgISg_publicNUMBER:=1;PROCEDUREdo_stuff;FUNCTIONget_stuffRETURNNUMBER;END;/CREATEORREPLACEPACKAGEBODYplch_pkgISPROCEDUREdo_stuffISBEGINDBMS_OUTPUT.put_line(g_public);END;FUNCTIONget_stuffRETURNNUMBERISBEGINdo_stuff;RETURNg_public+1;END;BEGINDBMS_OUTPUT.put_line(g_public);g_public:=2;END;/BEGINDBMS_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>PackagecreatedPackagebodycreated123234PL/SQLproceduresuccessfullycompletedSQL>
答案说明在125楼
2011-11-8 答案F.
包头声明的初始值先于包体。包体第一次被调用时会执行初始化代码,因而将包头里面的初始值覆盖了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。