Discussions
Categories
- 197.2K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 555 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
PLSQL Variables

I am trying to get variable_name, variable_type and comment of all variables from any package (it can be for example standard package, ULT_HTTP, etc). I want to get these informations by writting an request from all_source view.
Here is what i have tried :
select regexp_substr(text, '\w(\w|#|\$){0,127}', 1, 1)variable_name,regexp_substr(text, '\w(\w|#|\$){0,127}', 1, 2) variable_type,regexp_replace(regexp_substr(text, '--\s*.+', 1, 1, 'n'), '(^--\s*|$)') commentaire,text from all_source
where type = 'PACKAGE' and regexp_like(text, '^\s*(\w(\w|#|\$){0,127})\s*+EXCEPTION|CONSTANT|INTEGER|ROW|VARCHAR2(;|(\s+:=\s+.+;))', 'n')and type not in ('SUBTYPE', 'PROCEDURE', 'FUNCTION', 'FORMAL IN');
Comments
-
Consider using PL/Scope
It is simpler than parsing code.
-
How its work I admit that I am a beginner in the world of plsql and I told myself that it is possible to do it with regexp
-
it can be for example standard package, ULT_HTTP
-
You need to set some session settings like this:
ALTER SESSION SET PLSCOPE_SETTINGS='IDENTIFIERS:ALL, STATEMENTS:ALL';
Then compile the package, and then query the dictionary tables being populated when you compile PL/SQL and have set PLSCOPE settings.
In the article I mentioned there is an example :
here you would see that variable L_NUM and L_STR are declared on lunes 6 and 7, and that they reference the NUMBER and CHARACTER datatypes. You can modify the query in the example to filter only "VARIABLE" as TYPE; "DECLARATION" as USAGE and then get the associated REFERENCE row to get the datatype.
-
Poster mentioned ANY package, documentation exists only for Oracle provided packages.
-
Wow very cool, Thank you very much for the help.!