2010-05-06 4 views
1

Je n'ai pas trouvé beaucoup de données sur les internes de PL/Scope. Je voudrais l'utiliser pour analyser les identifiants dans les scripts PL/SQL. Cela fonctionne-t-il uniquement sur les instances Oracle 11g? Puis-je référencer ses dll pour l'utiliser sur une machine avec seulement ORACLE 9/10 installé?ORACLE PL/Scope

D'une manière connexe, dois-je exécuter le script pour que ses identifiants soient analysés?

Répondre

1

Pour répondre à la question facile d'abord, nous n'avons pas besoin d'exécuter l'unité de programme. Nous devons le compiler. C'est relativement simple:

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> 

(crédit où le crédit est dû, je pris cette requête de mon compagnon Tim Hall's Oracle-Base site)

Par ailleurs, notez que PL/Champ d'application fonctionne sur des programmes PL/SQL nommés (procédures, fonctions , paquets, etc.) Cela ne fonctionne pas sur les blocs PL/SQL anonymes. Je mentionne cela parce que vous parlez de «scripts» plutôt que de programmes. Il ne fera rien avec un script SQL contenant des blocs PL/SQL.

L'autre chose à garder à l'esprit est que PL/Scope remplit les tables sur l'espace de table SYSAUX, et peut ronger beaucoup de stockage. C'est pourquoi il n'est pas exécuté par défaut, et c'est pourquoi nous devrions l'utiliser judicieusement. En ce qui concerne la rétrocompatibilité: c'est une nouvelle fonctionnalité de 11g, et c'est une fonctionnalité de compilateur. Donc, je doute que ce soit quelque chose que vous pourriez juste crowbar dans une installation de 10g.

+0

« nous ne devons pas exécuter l'unité de programme. Nous devons compiler » ne savait pas ça, merci. –

1

ne fonctionnera pas sur 10g, mais vous pouvez copier le code dans un environnement de zéro pour l'analyse

Vous pourriez obtenir une édition OTN de 11g et copiez le code là juste pour l'analyse. Si vous pensez que ce serait se classer comme l'utilisation de la production, vous pouvez obtenir Personal Edition sur Windows pour quelques centaines de dollars