Oracle Error Pls-00123
Contents |
for Ada (DIANA), a tree-structured intermediate language. It is defined using a meta-notation called Interface Definition Language (IDL). DIANA is used internally by compilers and other tools. At compile time, PL/SQL source code is translated
Pls-00123: Program Too Large (diana Nodes)
into machine-readable m-code. Both the DIANA and m-code for a procedure or package are oracle diana stored in the database. At run time, they are loaded into the shared memory pool. The DIANA is used to compile dependent procedures; the m-code is simply executed. In the shared memory pool, a package spec, object type spec, standalone subprogram, or anonymous block is limited to 67108864 (2**26) DIANA nodes which correspond to tokens such as identifiers, keywords, operators, and so on. This allows for ~6,000,000 lines of code unless you exceed limits imposed by the PL/SQL compiler, some of which are given in Table C-1. Table C-1 PL/SQL Compiler Limits Item Limit bind variables passed to a program unit 32768 exception handlers in a program unit 65536 fields in a record 65536 levels of block nesting 255 levels of record nesting 32 levels of subquery nesting 254 levels of label nesting 98 levels of nested collections no predefined limit magnitude of a BINARY_INTEGER value -2147483648..2147483647 magnitude of a PLS_INTEGER value -2147483648..2147483647 number of formal parameters in an explicit cursor, function, or procedure 65536 objects referenced by a program unit 65536 precision of a FLOAT value (binary digits) 126 precision of a NUMBER value (decimal digits) 38 precision of a REAL value (binary digits) 63 size of an identifier (characters) 30 size of a string literal (bytes) 32767 size of a CHAR value (bytes) 32767 size of a LONG value (bytes) 32760 size of a LONG RAW value (bytes) 32760 size of a RAW value (bytes) 32767 size of a VARCHAR2 value (bytes) 32767 size of an NCHAR value (bytes) 32767 size of an NVARCHAR2 value (bytes) 32767 size of a BFILE value (bytes) 4G * value of DB_BLOCK_SIZE parameter size of a BLOB value (bytes) 4G * value of DB_BLOCK_SIZE parameter size of a CLOB value (bytes) 4G * value of DB_BLOCK_SIZE parameter size of an NCLOB value (bytes) 4G * value of DB_BLOCK_SIZE parameter To estimate how much memory a program unit requires, you can query the data dictionary view user_object_size. The column parsed_size returns the size (in bytes) of the "flattened" DIANA. For example: SQL> SELECT * FROM user_object_s
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 6.2 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up PLS-00123: program too large (Diana nodes) https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/limits.htm while trying to compile a package up vote 9 down vote favorite While compiling a package, I ran into an error message: Error: PLS-00123: program too large (Diana nodes) Line: 1 The package in question has about 1k lines (spec) + 13k lines in body. While researching on this, I came across this Ask Tom question When compiling a PL/SQL unit, the compiler builds a parse tree. http://stackoverflow.com/questions/4956670/pls-00123-program-too-large-diana-nodes-while-trying-to-compile-a-package The maximum size of a PL/SQL unit is determined by the size of the parse tree. A maximum number of diana nodes exists in this tree. Up to 7.3, you could have 2**14 (16K) diana nodes, and from 8.0 to 8.1.3, 2**15 (32K) diana nodes were allowed. With 8.1.3, this limit has been relaxed so that you can now have 2**26 (i.e., 64M) diana nodes in this tree for package and type bodies. While there is no easy way to translate the limits in terms of lines of source code, it has been our observation that there have been approximately 5 to 10 nodes per line of source code. Prior to 8.1.3, the compiler could cleanly compile up to about 3,000 lines of code. Starting with 8.1.3, the limit was relaxed for package bodies and type bodies which can now have approximately up to about 6,000,000 lines of code. This is a rough estimate. If your code has many spaces, long identifiers, etc., you may end up with source code larger than this. Now even if you take into consideration the last list about many spaces & large identifiers, I think it's reasonable to conclude that it'
too large. [message #260765] Mon, 20 August 2007 20:40 TimJF Messages: 11Registered: August 2007 Junior Member Hello everyone, To give http://www.orafaq.com/forum/t/87774/2/ you some background, I have developed a PL/SQL which is a rather large (ugly) thing. It contains approximately 60 procedures/functions. Unfortunately, I am unable to actually store this http://psoug.org/oraerror/PLS-00123.htm procedures, as I am just a lowly user of our 10g Oracle database. Due to it's excessive size, I am now encountering the error message: ORA-06550: line oracle error 7729, column 23: PLS-00123: program too large (Diana nodes) Fortunately for me, there is plenty of available documentation with common-sense solutions, which I have since implemented. (ie. multiple anonymous blocks, stored the procedures etc) However, my curiosity isn't satisfied! Do you have any ideas what section(s) from the below Code Statistics Summary would be the most oracle error pls-00123 significant indicators of the program being too large? Any ideas or links to relevant documentation would be greatly appreciated. Code Statistics Summary Count Statistic ----- -------------- *** Module Analysis 303 Declarations 773 Statements 55 DML statements 73 Stand-alone procedures 3 Stand-alone functions 6621 Code lines 1418 Blank or comment lines *** Oracle Version Dependencies 167 v7.1 *** Declaration Analysis 1 Variables with default value 170 Variables without default value 4 Constants 43 Function declarations 7 Procedure declarations 2 Cursor declarations *** DML Analysis 55 Implicit (SELECT INTO ) queries 18 Maximum number of items in a SELECT list *** Cursor Analysis 74 Cursor FOR loops using immediate SELECT 2 Explicit cursor OPENs 2 FETCH 2 Explicit cursor CLOSEs 35 Local program unit references to external variables *** Flow of Control Analysis 1 EXIT statements in FOR loops 5 Maximum number of nested IF levels *** Procedure/Function Analysis 3 Maximum number of RETURN statements in a function 11 Functions with OUT or IN OUT paramete
Library mySQL Code Library PHP Code Library JavaScript Code Library Oracle Terms & Definitions Oracle Error Codes PSOUG Community Blogs Oracle Jobs Board PSOUG Forum Oracle User Group Directory Free Oracle Magazines Online Learning Center PSOUG Presentations Advanced Code Search News and Events Sponsors Page Submit Code Contact Us Oracle Error: PLS-00123 Error Description: Program too large (string) Error Cause: PL/SQL was designed primarily for robust transaction processing. One consequence of the special-purpose design is that the PL/SQL compiler imposes a limit on block size. The limit depends on the mix of statements in the PL/SQL block. Blocks that exceed the limit cause this error. Action: The best solution is to modularize the program by defining subprograms, which can be stored in an Oracle database. Another solution is to break the program into two sub-blocks. Have the first block INSERT any data the second block needs into a temporary database table. Then, have the second block SELECT the data from the table. There haven't been any comments added for this error yet. You may add one if you like. Add a comment Name: Email: URL: Chars left:1000 (1000 max) (No HTML, but newlines will be preserved) Home : Code Library : Sponsors : Privacy : Terms of Use : Contact Us 79 users online © 2009 psoug.org PSOUG LOGIN Username: Password: Forgot your password?