RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
怎么使用数据库新功能PL/SCOPE

本篇内容主要讲解“怎么使用数据库新功能PL/SCOPE”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用数据库新功能PL/SCOPE”吧!

创新互联是一家集网站建设,呼图壁企业网站建设,呼图壁品牌网站建设,网站定制,呼图壁网站建设报价,网络营销,网络优化,呼图壁网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

我在会话中打开PL/Scope:

ALTER SESSION SET plscope_settings='identifiers:all'
/

然后我创建了如下的表和包:

CREATE TABLE plch_stuff
(
   amount   NUMBER
, rating   INTEGER
)
/
CREATE OR REPLACE PACKAGE plch_pkg
IS
   PROCEDURE do_stuff;
END plch_pkg;
/
CREATE OR REPLACE PACKAGE BODY plch_pkg
.......
END plch_pkg;
/

噢,抱歉,我不能让你看到包体的代码!请继续....

我对PL/Scope的USER_IDENTIFIERS视图进行如下查询:

SELECT type, usage
  FROM user_identifiers
WHERE object_name = 'PLCH_PKG'
ORDER BY 1, 2
/

我看到这些结果:

TYPE               USAGE
------------------ -----------
FUNCTION           CALL      
ITERATOR           DECLARATION
ITERATOR           REFERENCE  
LABEL              DECLARATION
PACKAGE            DECLARATION
PACKAGE            DEFINITION
PROCEDURE          DECLARATION
PROCEDURE          DEFINITION
VARIABLE           DECLARATION
VARIABLE           REFERENCE  
VARIABLE           REFERENCE

下面关于plch_pkg包的哪些句子是正确的?

(A)

包体里面没有任何私有(PRIVATE)的子程序。

(B)

do_stuff过程里面可能包含一个FORALL语句。

(C)

包体里面必须包含一个PACKAGE级别的变量(即不是在do_stuff里面声明的)。

(D)

do_stuff过程必须包含一个GOTO语句。
2011-11-9答案AB.
(A)
包体里面没有任何私有(PRIVATE)的子程序。
对应每个包里定义的过程你会看到两条记录:
PROCEDURE          DECLARATION
PROCEDURE          DEFINITION
对应每个包里定义的函数你会看到两条记录:
FUNCTION           DECLARATION
FUNCTION           DEFINITION
结果里面只有这样一对:
PROCEDURE          DECLARATION
PROCEDURE          DEFINITION
它就是对应于do_stuff过程,不再有其他子程序了。
(B)
do_stuff过程里面可能包含一个FORALL语句。
一个FORALL语句就像一个FOR循环,定义并且使用隐性游标。输出里这两行:
ITERATOR           DECLARATION
ITERATOR           REFERENCE  
有可能对应FORALL语句。
(C)
包体里面必须包含一个PACKAGE级别的变量(即不是在do_stuff里面声明的)。
这仅仅是“可能”而非“必须”。我们知道包体里面某处定义了一个变量,根据是这两行输出:
VARIABLE           DECLARATION
VARIABLE           REFERENCE
但这个变量可能在do_stuff内部定义。为了确定这个变量是不是PACKAGE级的,你必须知道所有程序单元的最小行号,然后看看这个变量定义行号是否在此之前。
(D)
do_stuff过程必须包含一个GOTO语句。
输出里面有这一行:
LABEL              DECLARATION
因此我们知道有一个标号被声明了,它可能出现在程序某处,像这样:
<>
但是输出里面并没有指示这个标号被引用, 否则的话我们应该看到另外一行输出:
LABEL              REFERENCE
(newkid加注:即使看到标号被引用,也不意味着GOTO, 比如退出循环的EXIT也可以引用标号)

到此,相信大家对“怎么使用数据库新功能PL/SCOPE”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前名称:怎么使用数据库新功能PL/SCOPE
文章网址:http://lswzjz.com/article/piiepp.html