ORACLE PL / Область применения - PullRequest
1 голос
/ 06 мая 2010

Я не нашел много данных о внутренностях PL / Scope.

Я бы хотел использовать его для анализа идентификаторов в сценариях PL / SQL. Работает ли он только на экземплярах Oracle 11g? Могу ли я ссылаться на его dll, чтобы использовать его на компьютере с установленным ORACLE 9/10?

Должен ли я соответствующим образом выполнить скрипт для анализа его идентификаторов?

Ответы [ 2 ]

1 голос
/ 07 мая 2010

Не работает на 10g, но вы можете скопировать код в «чистую» среду для анализа

Вы можете получить OTN-версию 11g и скопировать код для анализа. Если вы думаете, что это будет классифицировано как производственное использование, вы можете получить Personal Edition для Windows за несколько сотен долларов

1 голос
/ 06 мая 2010

Чтобы сначала ответить на простой вопрос, нам не нужно выполнять программный блок. Мы должны скомпилировать это. Это относительно просто:

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> 

(Кредит, где кредит должен быть получен, я взял этот запрос у моего партнера Сайт Тима Холла на Oracle-Base )

Кстати, обратите внимание, что PL / Scope работает с именованными программами PL / SQL (процедурами, функциями, пакетами и т. Д.). Он не работает на анонимных блоках PL / SQL. Я упоминаю об этом, потому что вы говорите о «сценариях», а не о программах. Он ничего не сделает со скриптом SQL, содержащим некоторые блоки PL / SQL.

Еще одна вещь, которую нужно иметь в виду, это то, что PL / Scope заполняет таблицы в табличном пространстве SYSAUX и может занимать много места. Вот почему он не запускается по умолчанию, и поэтому мы должны использовать его разумно.

Что касается обратной совместимости: это новая функция в 11g, и это функция компилятора. Поэтому я сомневаюсь, что это то, что вы могли бы просто установить в 10g.

...