Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ORACLE PL/Scope_Oracle_Stored Procedures_Plsql_Metadata - Fatal编程技术网

ORACLE PL/Scope

ORACLE PL/Scope,oracle,stored-procedures,plsql,metadata,Oracle,Stored Procedures,Plsql,Metadata,我没有找到太多关于PL/Scope内部的数据 我想用它来分析PL/SQL脚本中的标识符。它是否仅适用于Oracle 11g实例?我是否可以引用其DLL以在仅安装ORACLE 9/10的计算机上使用它 以一种相关的方式,我是否必须执行脚本才能分析其标识符?首先回答这个简单的问题,我们不必执行程序单元。我们必须编译它。这相对简单: SQL> alter session set plscope_settings='IDENTIFIERS:ALL' 2 / Session altered.

我没有找到太多关于PL/Scope内部的数据

我想用它来分析PL/SQL脚本中的标识符。它是否仅适用于Oracle 11g实例?我是否可以引用其DLL以在仅安装ORACLE 9/10的计算机上使用它


以一种相关的方式,我是否必须执行脚本才能分析其标识符?

首先回答这个简单的问题,我们不必执行程序单元。我们必须编译它。这相对简单:

SQL> alter session set plscope_settings='IDENTIFIERS:ALL'
  2  /

Session altered.

SQL> alter function str_to_number_tokens compile
  2  /

Function altered.

SQL> SELECT LPAD(' ', level*2, ' ') || name AS name, type, usage, usage_id, line, col
  2  FROM   user_identifiers
  3  START WITH usage_context_id = 0
  4  CONNECT BY PRIOR usage_id = usage_context_id;

NAME                           TYPE               USAGE         USAGE_ID       LINE        COL
------------------------------ ------------------ ----------- ---------- ---------- ----------
  STR_TO_NUMBER_TOKENS         FUNCTION           DECLARATION          1          1         10
    STR_TO_NUMBER_TOKENS       FUNCTION           DEFINITION           2          1         10
      P_STRING                 FORMAL IN          DECLARATION          3          2         10
      P_SEPARATOR              FORMAL IN          DECLARATION          4          3         13
        P_SEPARATOR            FORMAL IN          ASSIGNMENT           5          3         13
      RETURN_VALUE             VARIABLE           DECLARATION          6          6          5
      REGEX_STR                VARIABLE           DECLARATION          7          7          5
      REGEX_STR                VARIABLE           ASSIGNMENT           8         10          9
        P_SEPARATOR            FORMAL IN          REFERENCE            9         10         31
      REGEX_STR                VARIABLE           REFERENCE           10         17         46
      P_STRING                 FORMAL IN          REFERENCE           11         17         36
      REGEX_STR                VARIABLE           REFERENCE           12         16         47
      P_STRING                 FORMAL IN          REFERENCE           13         16         37
      REGEX_STR                VARIABLE           REFERENCE           14         12         57
      P_STRING                 FORMAL IN          REFERENCE           15         12         47
      RETURN_VALUE             VARIABLE           ASSIGNMENT          16         14         22
      RETURN_VALUE             VARIABLE           REFERENCE           17         19         16

17 rows selected.

SQL> 
(我从我的同伴那里接受了这个问题)

顺便说一句,请注意PL/Scope在命名的PL/SQL程序(过程、函数、包等)上运行。它不适用于匿名PL/SQL块。我提到这一点是因为你谈论的是“脚本”而不是程序。它不会对包含一些PL/SQL块的SQL脚本执行任何操作

要记住的另一件事是PL/Scope填充SYSAUX表空间上的表,并且可能占用大量存储空间。这就是为什么它不是默认运行的,这也是为什么我们应该明智地使用它


至于向后兼容性:它是11g中的一个新特性,同时也是一个编译器特性。所以我怀疑你是否可以将它撬开,安装到10g设备中

在10g上不起作用,但您可以将代码复制到scratch环境中进行分析

你可以得到一个11g的OTN版本,然后将代码复制到那里,只是为了进行分析。
如果你认为它会被归类为生产使用,你可以花几百美元在Windows上获得个人版。

“我们不必执行程序单元。我们必须编译它”我不知道,谢谢。