| Oracle8i Error Messages Release 8.1.5 A67785-01 |
|
This chapter lists messages generated by PL/SQL. For more information about PL/SQL, refer to the PL/SQL User's Guide and Reference.
PLS-00102 parser stack overflow because nesting is too deep
Cause: The parser, which checks the syntax of PL/SQL statements, uses a data structure called a stack; the number of levels of nesting in the PL/SQL block exceeded the stack capacity.
Action: Reorganize the block structure to avoid nesting at too deep a level. For example, move the lowest-level sub-block to a higher level.
PLS-00103 found 'string' but expected one of the following: 'string'"},
Cause: This error message is from the parser. It found a token (language element) that is inappropriate in this context.
Action: Check previous tokens as well as the one given in the error message. The line and column numbers given in the error message refer to the end of the faulty language construct.
PLS-00104 empty argument list in call of procedure 'string' must be omitted
Cause: In a subprogram call, the name of the subprogram was followed by an empty parameter list. For example, procedure P was called as P(). This is not allowed.
Action: Remove the empty parameter list. In the example, change the procedure call to P.
PLS-00105 at most one forward declaration of type 'string' is permitted
Cause: More than one forward declaration of a type is redundant.
Action: Remove all but one forward declaration.
PLS-00108 declarative units must be a single variable declaration
Cause: While checking a declarative unit (a top-level declare block without the BEGIN...END), PL/SQL found that there was more than one item declared or that the item was not a variable declaration. A table is a common variable declaration at the unit level. To define a TABLE, compile a DECLARE compilation unit, but only one at a time is allowed.
Action: Declare variables in separate declarative units.
PLS-00109 unknown exception name 'string' in PRAGMA EXCEPTION_INIT
Cause: No declaration for the exception name referenced in an EXCEPTION_INIT pragma was found within the scope of the pragma.
Action: Make sure the pragma follows the exception declaration and is within the same scope.
PLS-00110 bind variable 'string' not allowed in this context
Cause: A bind variable, that is, an identifier prefixed with a colon, was found in an inappropriate context.
Action: Remove the colon or replace the bind variable with the appropriate object.
PLS-00111 end-of-file in comment
Cause: A Comment had a comment initiator (/*), but before the Comment terminator (*/) was found, an end-of-file marker was encountered.
Action: Remove the Comment initiator or add a comment terminator. The line and column numbers accompanying the error message refer to the beginning of the last legal token before the Comment initiator.
PLS-00112 end-of-line in quoted identifier
Cause: A quoted identifier had a beginning quote ("), but before the ending quote (") was found, an end-of-line marker was encountered.
Action: Remove the beginning quote or add the ending quote. The line and column numbers accompanying the error message refer to the beginning of the quoted identifier.
PLS-00113 END identifier 'string' must match 'string' at line string, column string
Cause: Following the keyword END, which terminates some language constructs (such as loops, blocks, functions, and procedures), you can optionally place the name of that construct. For example, at the end of the definition of loop L you might write END L. This error occurs when the optional name does not match the name given to the language construct. It is usually caused by a misspelled identifier or by faulty block structure.
Action: Make sure the spelling of the END identifier matches the name given to the language construct and that the block structure is correct.
PLS-00114 identifier 'string' too long
Cause: The name of a PL/SQL variable is longer than 30 characters. Legal identifiers (including quoted identifiers) have a maximum length of 30 characters. A string literal might have been mistakenly enclosed in double quotes instead of single quotes, in which case PL/SQL considers it a quoted identifier.
Action: Shorten the identifier.
PLS-00115 this PRAGMA must follow the declaration of 'string'
Cause: The pragma refers to a PL/SQL object that was not declared or is not within the scope of the reference. Identifiers must be declared before they are used in a pragma; forward references are not allowed.
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00116 Duplicate where-clause in table expression
Cause: Two or more WHERE clauses were found in a DELETE, SELECT, or UPDATE statement. The WHERE clause specifies a condition under which rows in a table are processed. The condition can contain several logical expressions connected by AND or OR, but a statement can contain only one WHERE clause.
Action: Remove one of the WHERE clauses and, if necessary, connect logical expressions by AND or OR.
PLS-00117 Duplicate connect-by clause in table expression
Cause: Two or more CONNECT BY clauses were found in a SELECT statement. The CONNECT BY clause defines a relationship used to return rows in a hierarchical order. The relationship can contain two expressions separated by a relational operator (such as = or !=), but a statement can contain only one CONNECT BY clause.
Action: Remove one of the CONNECT BY clauses and, if necessary, separate expressions by a relational operator.
PLS-00118 Duplicate group-by clause in table expression
Cause: Two or more GROUP BY clauses were found in a SELECT statement. The GROUP BY clause lists column expressions used to form a summary row for each group of selected rows. The list can contain several column expressions separated by commas, but a statement can contain only one GROUP BY clause.
Action: Remove one of the GROUP BY clauses and, if necessary, separate column expressions by commas.
PLS-00119 Duplicate having-clause in table expression
Cause: Two or more HAVING clauses were found in a SELECT statement. The HAVING clause specifies a condition under which groups of rows (formed by the GROUP BY clause) are included in the result. The condition can include several logical expressions connected by AND or OR, but a statement can contain only one HAVING clause.
Action: Remove one of the HAVING clauses and, if necessary, connect logical expressions by AND or OR.
PLS-00120 inappropriate argument in OPEN statement
Cause: The CURSOR_NAME parameter in an OPEN statement is misspelled or does not refer to a legally declared cursor.
Action: Check the spelling of the CURSOR_NAME parameter. Make sure the cursor was declared properly.
PLS-00121 only the set function COUNT may take * as an argument
Cause: The asterisk (*) option was used in the argument list of a SQL group function other than COUNT. For example, the code might look like:
SELECT SUM(*) INTO emp_count FROM emp; -- should be COUNT(*)
Only COUNT permits the use of the asterisk option, which returns the number of rows in a table.
Action: Remove the asterisk option from the argument list and replace it with an expression that refers to one or more database columns.
PLS-00122 USING is not allowed on this function
Cause: USING rather than a comma is separating function arguments, but the function is not a built-in for which this is expected.
Action: Change the argument specification or the function name.
PLS-00123 program too large
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.
PLS-00124 name of exception expected for first arg in exception_init pragma
Cause: The first argument passed to the EXCEPTION_INIT pragma was something other than an exception name. The first argument must be the name of a legally declared exception.
Action: Replace the first argument with the name of a legally declared exception.
PLS-00125 type name expected
Cause: When a constant or variable was declared, its datatype was not specified. For example, the code might look like:
pi CONSTANT := 3.14159; -- should be CONSTANT REAL := 3.14159
Every constant and variable must have a datatype, which specifies a storage format, constraints, and valid range of values.
Action: Supply the type name.
PLS-00126 selector ALL is not allowed
Cause: The ALL shortcut for specifying system privileges or statement options was used in a SQL statement. PL/SQL does not support the ALL shortcut.
Action: Remove the ALL shortcut from the SQL statement.
PLS-00127 Pragma string is not a supported pragma
Cause: The named pragma (compiler directive) is not among those supported by PL/SQL. The pragma name might be misspelled, or the pragma syntax might be faulty.
Action: Check the spelling of the pragma name, and make sure the proper syntax was used.
PLS-00128 Illegal number of arguments for pragma string
Cause: The number of arguments (actual parameters) passed to the named pragma (compiler directive) is incorrect. A required argument was omitted from the argument list, or the pragma syntax is faulty (for example, a comma might be missing between two parameters).
Action: Supply the missing argument, or correct the faulty syntax.
PLS-00129 Pragma INTERFACE only supports C as its first argument
Cause: The first parameter passed to pragma INTERFACE specified a host language other than C. Currently, C is the only host language supported. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the first parameter, which should be C, and make sure the proper syntax was used.
PLS-00130 Pragma string expects 1st argument to be a procedure/function/package/cursor
Cause: The first argument (actual parameter) passed to the named pragma (compiler directive) was not the name of a subprogram, package, or cursor, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the first parameter, and make sure the proper syntax was used.
PLS-00131 Pragma string expects 2nd argument to be a procedure
Cause: The second argument (actual parameter) passed to the named pragma (compiler directive) was not the name of a procedure, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the second parameter, and make sure the proper syntax was used.
PLS-00132 Pragma RESTRICT_REFERENCES does not support string
Cause: One of the parameters passed to pragma RESTRICT_REFERENCES was not among the following, as required: WNDS, WNPS, RNDS, RNPS. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters)
Action: Check the spelling of all the parameters, and make sure the proper syntax was used.
PLS-00133 Pragma string expects 1st argument to be an identifier or string-literal
Cause: The first argument (actual parameter) passed to the named pragma (compiler directive) was not an identifier or string literal, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the first parameter, and make sure the proper syntax was used.
PLS-00134 Pragma string expects 2nd argument to be an identifier or string-literal
Cause: The second argument (actual parameter) passed to the named pragma (compiler directive) was not an identifier or string literal, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the second parameter, and make sure the proper syntax was used.
PLS-00135 Pragma string expects 3rd argument to be an identifier, string or numeric literal
Cause: The third argument (actual parameter) passed to the named pragma (compiler directive) was not an identifier or string literal, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the third parameter, and make sure the proper syntax was used.
PLS-00138 Precision for a binary type must be one of 8, 16, or 32
Cause: Invalid precision was specified for a signed or unsigned binary type.
Action: Specify precision as one of 8, 16, or 32.
PLS-00139 duplicate external NAME specification in subprogram expression
Cause: The subprogram was found to have two external NAME specifications.
Action: Remove one of the external NAME specifications.
PLS-00140 duplicate external LIBRARY specification in subprogram expression
Cause: The subprogram was found to have two external LIBRARY specifications.
Action: Remove one of the external LIBRARY specifications.
PLS-00141 duplicate external PARAMETER STYLE specification in subprogram expression
Cause: The subprogram was found to have two external PARAMETER STYLE specifications.
Action: Remove one of the external PARAMETER STYLE specifications.
PLS-00142 duplicate external PARAMETER list specification in subprogram expression
Cause: The subprogram was found to have two external PARAMETER STYLE specifications.
Action: Remove one of the external PARAMETER STYLE specifications.
PLS-00143 duplicate external LANGUAGE specification in subprogram expression
Cause: The subprogram was found to have two external LANGUAGE specifications.
Action: Remove one of the external LANGUAGE specifications.
PLS-00144 duplicate external CALLING STANDARD specification in subprogram expression
Cause: The subprogram was found to have two external CALLING STANDARD specifications.
Action: Remove one of the external CALLING STANDARD specifications.
PLS-00145 duplicate external WITH CONTEXT specification in subprogram expression
Cause: The subprogram was found to have two external WITH CONTEXT specifications.
Action: Remove one of the external WITH CONTEXT specifications.
PLS-00146 duplicate external TRUSTED/UNTRUSTED specification in subprogram expression
Cause: The subprogram was found to have two external TRUSTED/UNTRUSTED specifications.
Action: Remove one of the external TRUSTED/UNTRUSTED specifications.
PLS-00147 LIBRARY file specification string is empty
Cause: A zero-length string was found for the LIBRARY file specification.
Action: Specify a non-zero length string for the LIBRARY file specification.
PLS-00148 Only 1 pragma of this type is allowed per subprogram
Cause: The subprogram was found to have two PRAGMA RESTRICT_REFERENCES.
Action: Remove one of the PRAGMA RESTRICT_REFERENCES.
PLS-00150 found: string but expected : INTEGER
Cause: This error happens in the creation of a PL/SQL external type: [SIGNED | UNSIGNED] BINARY INTEGER (precision). It may be referenced only in a create type statement. Such types are non-queryable. Something other than 'INTEGER' was supplied.
Action: Use a different type and retry the operation.
PLS-00151 Expression or Variable is an illegal type to PLS/QL: string
Cause: A type was used which does not belong PL/SQL. This type can only be referenced in CREATE TYPE statements, and is a non-queryable data type.
Action: Use a different type and retry the operation.
PLS-00152 POINTER type may only reference an object type.
Cause: A POINTER type which does not belong to PL/SQL can only refer to an object type. This type can only be referenced in CREATE TYPE statements, and is a non-queryable data type.
Action: Use a different type and retry the operation.
PLS-00153 A string type may only be used as an object type attribute.
Cause: A POINTER or [SIGNED/UNSIGNED] BINARY INTEGER can only be used as attributes of object types. These types can only be referenced in CREATE TYPE statements, and are non-queryable data types. One of these external PL/SQL types outside of an object type.
Action: Use a different type and retry the operation.
PLS-00154 An object type may have only 1 MAP or 1 ORDER method.
Cause: More than one map or order function was declared. An object type can have only one map function or one order function, but not both.
Action: Delete all but one of the MAP or ORDER functions on the type.
PLS-00155 Only a function may be a MAP or ORDER method.
Cause: A member procedure was declared as either a map or order method. Only member functions can be map or order methods.
Action: Change the procedure to a function.
PLS-00156 Null constraints not supported for object attributes.
Cause: A null constraint was specified for an attribute in an object. This is not supported.
Action: Remove the constraint.
PLS-00157 AUTHID only allowed on schema-level programs
Cause: An AUTHID clause was specified for a subprogram inside a package or type. These clauses are only supported for top-level stored procedures, packages, and types.
Action: Remove the clause.
PLS-00158 AUTHID and SQL_NAME_RESOLVE clauses must match
Cause: The AUTHID and SQL_NAME_RESOLVE clauses must specify the same user (either CURRENT_USER or DEFINER).
Action: Make the clauses match.
PLS-00159 AUTHID/SQL_NAME_RESOLVE on spec and body must match
Cause: The AUTHID clause for a type/package specification and the SQL_NAME_RESOLVE clause for its body must both be the same (either CURRENT_USER or DEFINER).
Action: Make sure the clauses match.
PLS-00160 AUTHID must specify CURRENT_USER or DEFINER
Cause: The only two allowed options for AUTHID are CURRENT_USER and DEFINER.
Action: Fix the AUTHID clause to specify CURRENT_USER or DEFINER.
PLS-00161 Pragma string expects 3rd argument to be an identifier or a string literal
Cause: The third argument (actual parameter) passed to the named pragma (compiler directive) was not an identifier or a string literal when there is a fourth argument to the pragma. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the third parameter, and make sure the proper syntax was used.
PLS-00162 Pragma string expects 4th argument to be a positive integer literal
Cause: The fourth argument (actual parameter) passed to the named pragma (compiler directive) was not a numeric literal, as required. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Action: Check the spelling of the fourth parameter, and make sure the proper syntax was used.
PLS-00164 cursor subqueries are not supported in this release
Cause: This feature is not yet implemented.
Action: No action required.
PLS-00165 call statement is not supported in PL/SQL
Cause: A CALL statement was found in PL/SQL source.
Action: Use an ordinary PL/SQL function or procedure call.
PLS-00201 identifier 'string' must be declared
Cause: An attempt was made to reference either an undeclared variable, exception, procedure, or other item, or an item to which no privilege was granted or an item to which privilege was granted only through a role.
Action:
Stored objects (packages, procedures, functions, triggers, views) run in the security domain of the object owner with no roles enabled except PUBLIC. Again, you will be notified only that the item was not declared.
PLS-00202 type 'string' must be declared
Cause: An attempt was made to reference an undefined type. Either the type specifier was not declared or it is not within the scope of the reference.
Action: Check the spelling and declaration of the type specifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00203 function DECODE must be called with at least 3 non-boolean arguments
Cause: Less than three arguments were passed to the built-in function DECODE. Though DECODE takes a variable number of (non-Boolean) arguments, at least three arguments must be passed.
Action: Call DECODE with three or more arguments.
PLS-00204 function or pseudo-column 'string' may be used inside a SQL statement only
Cause: A pseudocolumn or proscribed function was used in a procedural statement. The SQL pseudocolumns (CURRVAL, LEVEL, NEXTVAL, ROWID, ROWNUM) can be used only in SQL statements. Likewise, certain functions such as DECODE, DUMP, and VSIZE and the SQL group functions (AVG, MIN, MAX, COUNT, SUM, STDDEV, VARIANCE) can be used only in SQL statements.
Action: Remove the pseudocolumn reference or function call from the procedural statement. Or, replace the procedural statement with a SELECT INTO statement; for example, replace:
bonus := DECODE(rating, 1, 5000, 2, 2500, ...);
with the following statement:
SELECT DECODE(rating, 1, 5000, 2, 2500, ...) INTO bonus FROM dual;
PLS-00205 Aggregate not allowed here
Cause: An aggregate, that is, a parenthesized list of values such as (7788, 'SCOTT', 20), was found in an inappropriate context.
Action: Remove or relocate the aggregate.
PLS-00206 %TYPE must be applied to a variable, column, field or attribute, not to "string"
Cause: The program object declared using the %TYPE datatype attribute is not of the appropriate class. It must be a variable, column, record component, subprogram formal parameter, or other object to which values can be assigned.
Action: Declare an object of the appropriate class or define the datatype in another way (for example, use %ROWTYPE).
PLS-00207 identifier 'string', applied to implicit cursor SQL, is not a legal cursor attribute
Cause: An identifier that is not a cursor attribute was applied to the identifier SQL. For example, this error occurs if the cursor attribute is misspelled.
Action: Check the spelling of the cursor attribute name. Make sure the attribute is one of these: %NOTFOUND, %FOUND, %ROWCOUNT, %ISOPEN.
PLS-00208 identifier 'string' is not a legal cursor attribute
Cause: An identifier not declared as a cursor attribute was applied to an identifier declared as a cursor. For example, this error occurs if the cursor attribute is misspelled.
Action: Check the spelling of the cursor attribute name. Make sure the attribute is one of these: %NOTFOUND, %FOUND, %ROWCOUNT, %ISOPEN.
PLS-00209 table 'string' is not in FROM clause
Cause: In a query, a table referenced by the select list is not named in the FROM clause.
Action: Check the spelling of the table names, make sure each column in the select list refers to a table in the FROM clause, then re-execute the query.
PLS-00210 an OTHERS clause is required in this CASE statement
Cause: Unless the clauses of a CASE statement mention all values of the type of the selecting expression, an OTHERS clause must be provided as the last clause of the CASE statement. It is impossible to cover all values of type INTEGER (or NUMBER), so an OTHERS clause is always required when the expression following the keyword CASE is of type INTEGER (or NUMBER).
Action: No action required since CASE statement not supported in releases 1.x,2.x, or 3.x.
PLS-00211 CASE labels or ranges must not be duplicated in different WHEN clauses
Cause: In this CASE statement, a value appears in more than one WHEN clause. A value may appear in at most one WHEN clause of a CASE statement.
Action: No action required since CASE statement not supported in releases 1.x,2.x, or 3.x.
PLS-00212 could not obtain enough memory to compile CASE statement
Cause: The CASE statement is too big. The compiler did not have enough storage to process it.
Action: No action required since CASE statement not supported in releases 1.x,2.x, or 3.x.
PLS-00213 package STANDARD not accessible
Cause: The PL/SQL compiler could not find package STANDARD in the current Oracle database. To compile a program, PL/SQL needs package STANDARD.
Action: Make sure that package STANDARD is available in the current Oracle database, then retry the operation.
PLS-00214 BEGIN...END block nesting is too deep
Cause: The number of levels of nesting in the PL/SQL block is too large. Blocks can be nested up to 255 levels deep, depending on the availability of system resources such as memory.
Action: Reorganize the block structure to avoid nesting at too deep a level. For example, move the lowest-level sub-block to a higher level.
PLS-00215 String length constraints must be in range (1 .. 32767)
Cause: When a character variable was declared, a length outside the legal range was specified. For example, the following declarations are illegal:
flag CHAR(0); -- illegal; zero length name VARCHAR2(-10); -- illegal; negative length
Action: Change the length constraint, making sure that it lies in the range 1 .. 32767.
PLS-00216 NUMBER precision constraint must be in range (1 .. 38)
Cause: A NUMBER variable was declared with a precision that is outside the legal range. Declarations such as N NUMBER(800) or N NUMBER(123,10) are not supported.
Action: Change the illegal NUMBER precision constraint, making sure that it lies in the range 1 .. 38.
PLS-00217 NUMBER scale constraint must be in range (-84 .. 127)
Cause: A NUMBER variable was declared with a scale that is outside the legal range. Declarations such as N NUMBER(10,345) or N NUMBER(10,-100) are not supported.
Action: Change the illegal NUMBER scale constraint, making sure that it lies in the range -84 .. 127.
PLS-00218 a variable declared NOT NULL must have an initialization assignment
Cause: In general, variables that have no initialization clause in their declaration are automatically initialized to NULL. This is illogical for NOT NULL variables; therefore, an initialization clause is required.
Action: Add an initialization clause to the variable declaration. If the initialization is too complicated for the syntax, one can add a function call (in a later release).
PLS-00219 label 'string' reference is out of scope
Cause: A block or loop label was used to qualify a variable (as in outer_block.date) that was not declared or is not within the scope of the label. The variable name might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the variable name. Also confirm that the declaration is placed correctly in the block structure.
PLS-00220 simple name required in this context
Cause: A qualified name such as A.B or A.B.C is not permitted here.
Action: Use a simple name such as A instead.
PLS-00221 'string' is not a procedure or is undefined
Cause: An identifier being referenced as a procedure was not declared or actually represents another object (for example, it might have been declared as a function).
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00222 no function with name 'string' exists in this scope
Cause: An identifier being referenced as a function was not declared or actually represents another object (for example, it might have been declared as a procedure).
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00223 paramaterless procedure 'string' used as function
Cause: An identifier being referenced as a parameterless function actually represents a procedure.
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure. If necessary, change the declaration of the identifier or change the reference so that it does not require a return value.
PLS-00224 object 'string' must be of type function or array to be used this way
Cause: An identifier being referenced as a function or an array actually represents an object (a number or date, for example) that cannot be referenced in this way.
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00225 subprogram or cursor 'string' reference is out of scope
Cause: A subprogram or cursor references a variable that was not declared or is not within the scope of the subprogram or cursor. The variable name might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the variable name. Also confirm that the declaration is placed correctly in the block structure.
PLS-00226 package 'string' used as variable reference
Cause: A package was referenced in an expression as if it were a variable or function. Either the name of the variable or function is misspelled or the reference is not fully qualified. For example, to call the function my_function, which is stored in package my_package, dot notation must be used, as follows:
... my_package.my_function ...
Action: Correct the spelling of the variable or function name or use dot notation to reference the packaged variable or function.
PLS-00227 subprogram 'in' formal string is not yet denotable
Cause: When the formal parameters of a subprogram were declared, one parameter was used to initialize another, as in:
PROCEDURE my_proc (j NUMBER, k NUMBER := j) IS ...
The first parameter has no value until run time, so it cannot be used to initialize another parameter.
Action: Remove the illegal formal parameter reference.
PLS-00228 Illegal declaration of variable of type LONG
Cause: An attempt was made to declare a variables to be of type LONG. Only columns can be of type LONG.
Action: Remove the offending variable definition.
PLS-00229 Attribute expression within SQL expression
Cause: An attribute expression, such as SQL%NOTFOUND, was used in a SQL statement, but attribute expressions are allowed only in procedural statements.
Action: To workaround this limitation, assign the value of the attribute expression to a variable, then use the variable in the SQL statement. For example, replace the statement:
INSERT INTO audits VALUES (c1%ROWCOUNT, ...);
with the following statements:
row_count := c1%ROWCOUNT; INSERT INTO audits VALUES (row_count, ...);
PLS-00230 OUT and IN OUT formal parameters may not have default expressions
Cause: When the formal parameters of a procedure were declared, an OUT or IN OUT parameter was initialized to a default value, as in:
PROCEDURE calc_bonus (bonus OUT REAL := 00000, ...) IS ...
However, only IN parameters can be initialized to default values.
Action: Remove the illegal default expression.
PLS-00231 function 'string' may not be used in SQL
Cause: A proscribed function was used in a SQL statement. Certain functions such as SQLCODE and SQLERRM can be used only in procedural statements.
Action: Remove the function call from the SQL statement. Or, replace the function call with a local variable. For example, the following statement is illegal:
INSERT INTO errors VALUES (SQLCODE, SQLERRM);
However, you can assign the values of SQLCODE and SQLERRM to local variables, then use the variables in the SQL statement, as follows:
err_num := SQLCODE; err_msg := SQLERRM; INSERT INTO errors VALUES (err_num, err_msg);
PLS-00232 nested packages not permitted
Cause: A package was declared inside another package, but package declarations are allowed only at the top level. In other words, packages cannot be nested.
Action: Move the package declaration outside the enclosing package.
PLS-00233 function name used as an exception name in when clause
Cause: The WHEN clause in an exception handler contains a function call instead of an exception name. A valid exception handler consists of a WHEN clause, which must specify an exception, followed by a sequence of statements to be executed when that exception is raised.
Action: Check the spelling of the identifier in the WHEN clause, then replace the function call with an exception name.
PLS-00234 PARAMETER STYLE SQL may not be specified with a PARAMATERS list
Cause: A subprogram cannot specify both PARAMETER STYLE SQL and an explicit PARAMETERS list. Use PARAMETER STYLE GENERAL to supply default PARAMETERS list types.
Action: Change the subprogram specification.
PLS-00235 the external type is not appropriate for the parameter
Cause: An unsuccessful attempt was made to convert a parameter to the specified external parameter type.
Action: Specify a different external type or parameter type.
PLS-00236 Invalid external type specification for string.
Cause: The external type specified is not valid for one of the following: INDICATOR, LENGTH, MAXLEN, TDO, DURATION, CHARSETID, or CHARSETFORM.
Action: Check PL/SQL User's Guide and Reference and specify an appropriate external type.
PLS-00237 invalid BY VALUE indicator or length specification
Cause: BY VALUE was specified with an indicator or length parameter that is being passed in OUT or IN OUT mode. Only IN mode parameters may be passed by value.
Action: Remove the BY VALUE specification or change it to IN mode.
PLS-00238 external parameter name string not found in formal parameter list
Cause: An external parameter name was specified that does not match one in the formal parameter list.
Action: Correct the external parameter name.
PLS-00239 invalid external type specification for SQLCODE
Cause: An inappropriate external parameter type was specified for the SQLCODE parameter.
Action: Correct the SQLCODE parameter specification.
PLS-00240 Invalid type specification for RETURN indicator, length, tdo, duration
Cause: An inappropriate external parameter type was specified for the RETURN indicator, LENGTH, TDO, or DURATION.
Action: Correct the RETURN parameter specification.
PLS-00241 invalid external type specification for SQLSTATE
Cause: An inappropriate external parameter type was specified for the SQLSTATE parameter.
Action: Correct the SQLSTATE parameter specification.
PLS-00242 invalid external type specification for CONTEXT
Cause: An inappropriate external parameter type was specified for the CONTEXT parameter.
Action: Correct the CONTEXT parameter specification.
PLS-00243 invalid external type specification for SQLNAME
Cause: An inappropriate external parameter type was specified for the SQLNAME parameter.
Action: Correct the SQLNAME parameter specification.
PLS-00244 Multiple declarations in foreign function formal parameter list
Cause: There are multiple declarations of at least one the following FORMAL, INDICATOR, LENGTH, MAXLENGTH, or CONTEXT. PL/SQL allows only one declaration of the above for each formal parameter in the PARAMETERS clause.
Action: Correct the PARAMETERS clause.
PLS-00245 Formals used in the 'parameters' clause must appear exactly once
Cause: There are multiple declarations of the formal parameter in the PARAMETERS clause. PL/SQL allows only one declaration of the formal parameter in the PARAMETERS clause.
Action: Correct the PARAMETERS clause.
PLS-00246 PARAMETER STYLE is unsupported
Cause: A PARAMETER STYLE clause was placed in the external subprogram body.
Action: Remove the PARAMETER STYLE clause.
PLS-00247 LIBRARY name must be specified
Cause: The LIBRARY name is missing from the external subprogram body.
Action: The LIBRARY name was not specified in the external subprogram body.
PLS-00248 Invalid Library Syntax
Cause: The LIBRARY syntax was entered incorrectly.
Action: Correct the LIBRARY syntax and recompile.
PLS-00249 Invalid WITH CONTEXT Syntax
Cause: CONTEXT was used in a WITH CONTEXT or a PARAMETERS clause. This is invalid.
Action: Check if WITH CONTEXT is used without specifying CONTEXT in the PARAMETERS clause or vice versa. The PARAMETERS clause must be complete. Thus if WITH CONTEXT is specified, then CONTEXT must be referenced in the PARAMETERS clause (if there is one).
PLS-00250 Incorrect Usage of string in parameters clause.
Cause: The usage of Keywords such as MAXLEN, LENGTH, CHARSETID, CHARSETFORM RETURN in the parameters clause was incorrect
Action: This error occurs if keywords like MAXLEN, LENGTH, TDO, DURATION, CHARSETID, or CHARSETFORM cannot be used with PL/SQL formal parameters or the mode of the formal parameter. For example, MAXLEN can only be declared for a CHAR or VARCHAR2 PL/SQL variable and its use is allowed only for OUT or INOUT PL/SQL variables. Also, RETURN was specified in the parameters clause for a PL/SQL PROCEDURE. For example:
CREATE PROCEDURE proc IS EXTERNAL NAME ... LIBRARY ... PARAMETERS(RETURN INDICATOR SHORT, RETURN);
PLS-00251 RETURN, for actual function return, must be last in the parameters clause
Cause: RETURN specification for the actual function return, used within the parameters clause must hold the very last position. Example: The following will give this error since the RETURN specification for the actual function return in the parameters clause is not the last.
FUNCTION myexternalfunc (var1 BINARY_INTEGER, var2 BINARY_INTEGER) RETURN BINARY_INTEGER IS EXTERNAL NAME "myexternalfunc" LIBRARY somelib PARAMETERS (var1 LONG, var2 SHORT, RETURN INT, RETURN INDICATOR SHORT);
The correct syntax is the following. Note that RETURN for actual function return is the last specification in the parameters clause.
FUNCTION myexternalfunc (var1 BINARY_INTEGER, var2 BINARY_INTEGER) RETURN BINARY_INTEGER IS EXTERNAL NAME "myexternalfunc" LIBRARY somelib PARAMETERS (var1 LONG, var2 SHORT, RETURN INDICATOR SHORT, RETURN INT);
Action: Correct the syntax of the RETURN specification in the parameters clause.
PLS-00252 reference to the wrong copy of package STANDARD
Cause: A reference is made to the fixed package version of STANDARD when the database is open, or to the on-disk version when the database is closed. Explicit use of a SYS.X$ package name can lead to this. One might also see this from a compilation that begins while the database is closed but has the bad luck to have another session open the database before compilation is complete. Another possible cause is having SET SERVEROUTPUT ON through SVRMGRL when doing an ALTER DATABASE CLOSE.
Action: Make use of on-disk versions of packages when the database is open and fixed (preloaded) versions when the database is closed. Do not attempt to use the wrong set. It should be quite hard to reference the wrong set, except by using SYS.X$ package names explicitly. Also, be sure to SET SERVEROUTPUT OFF before doing an ALTER DATABASE CLOSE.
PLS-00253 Formal parameter string missing in the parameters clause
Cause: The parameter clause does not have a matching parameter for a parameter specified in the formal parameter list.
Action: Provide a matching parameter in parameters clause for every formal parameter.
PLS-00254 OUT and IN/OUT modes cannot be used in this context
Cause: Actual parameter mode (OUT, or IN/OUT) is not used properly in USING clause. For USING clause in an OPEN statement, only IN mode is allowed.
Action: Change the parameter mode in the USING clause to an appropriate mode.
PLS-00255 CALL Specification parameters cannot have default values
Cause: CALL Specification formal parameters default values are disallowed.
Action: Remove the default values in the formal parameter list (specification or body) and compile again.
PLS-00256 string is not a valid external library
Cause: The supplied external library name in the external clause is not a valid alias library.
Action: Provide the name of a valid alias library that has been previously declared.
PLS-00257 illegal use of EXTERNAL clause in a TYPE or PACKAGE specification
Cause: An EXTERNAL Clause was detected in a TYPE Specification or a PACKAGE specification.
Action: Remove the EXTERNAL Clause and use the new CALL Specification syntax.
PLS-00258 constrained datatypes disallowed in CALL Specifications
Cause: A call specification for C or Java cannot have constraints on the PL/SQL formal parameter types. PL/SQL types which have constraints are NATURAL, NATURALN, POSITIVE, POSITIVEN, SIGNTYPE, INTEGER, INT, SMALLINT, DECIMAL, NUMERIC, DEC. This includes NOT NULL constraints from POSITIVEN, NATURALN.
Action: Use the unconstrained type for that PL/SQL formal declaration that is, NUMBER, BINARY_INTEGER or PLS_INTEGER
PLS-00259 rights model (AUTHID) must be specified
Cause: It is mandatory to specify the rights model if a PL/SQL PROCEDURE, FUNCTION, PACKAGE OR TYPE HAS CALL-Specifications.
Action: Add the AUTHID clause indicating the rights model.
PLS-00261 Java CALL Specification not yet allowed as a method in an object type
Cause: A call specification declaring that an implementation is in Java has been found for a method of an object or opaque type. This usage is not yet supported.
Action: Implement the method using a language other than Java. A PL/SQL method implementation is permitted to call to Java through a call specification provided as a schema-level procedure or in a package; such a call specification can only target a static Java method, however.
PLS-00302 component 'string' must be declared
Cause: In a reference to a component (for example, in the name "A.B", "B" is a component of "A"), the component has not been declared. The component might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the component. Also confirm that the declaration is placed correctly in the block structure.
PLS-00303 qualifier 'string' must be declared
Cause: In a name such as "A.B", "A" is the qualifier, and "B" is a component of the qualifier. This error occurs when no declaration for the qualifier is found. The qualifier might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the qualifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00304 cannot compile body of 'string' without its specification
Cause: The compiled package specification required to compile a package body could not be found. Some possible causes follow:
The package specification must be compiled before compiling the package body, and the compiler must have access to the compiled specification.
Action: Check the spelling of the package name. Compile the package specification before compiling the package body. Also, make sure the compiler has access to the compiled specification.
PLS-00305 previous use of 'string' (at line string) conflicts with this use
Cause: While looking for prior declarations of a cursor, procedure, function, or package, the compiler found another object with the same name in the same scope. Or, the headers of subprogram in a package specification and body do not match word for word.
Action: Check the spelling of the cursor, procedure, function, or package name. Also check the names of all constants, variables, parameters, and exceptions declared in the same scope. Then, remove or rename the object with the duplicate name. Or, change the headers of the packaged subprogram so that they match word for word.
PLS-00306 wrong number or types of arguments in call to 'string'
Cause: This error occurs when the named subprogram call cannot be matched to any declaration for that subprogram name. The subprogram name might be misspelled, a parameter might have the wrong datatype, the declaration might be faulty, or the declaration might be placed incorrectly in the block structure. For example, this error occurs if the built-in square root function SQRT is called with a misspelled name or with a parameter of the wrong datatype.
Action: Check the spelling and declaration of the subprogram name. Also confirm that its call is correct, its parameters are of the right datatype, and, if it is not a built-in function, that its declaration is placed correctly in the block structure.
PLS-00307 too many declarations of 'string' match this call
Cause: The declaration of a subprogram name is ambiguous because there was no exact match between the declaration and the call and more than one declaration matched the call when implicit conversions of the parameter datatypes were used. The subprogram name might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the subprogram name. Also confirm that its call is correct, its parameters are of the right datatype, and, if it is not a built-in function, that its declaration is placed correctly in the block structure.
PLS-00308 this construct is not allowed as the origin of an assignment
Cause: The construct or expression does not designate a value that can be assigned to a variable. For example, the datatype name NUMBER cannot appear on the right hand side of an assignment statement as in X := NUMBER.
Action: Correct the illegal assignment statement.
PLS-00309 with %LAST attribute, 'string' must be a variable of an enumerated type
Cause: The "%LAST" attribute must be applied to an identifier that has been declared as a variable of an enumerated type (or subtype of an enumerated type). This error occurs when "%LAST" follows some identifier that has not been so declared.
Action: Make sure that %LAST follows an enumerated type (or subtype of an enumerated type).
PLS-00310 with %ROWTYPE attribute, 'string' must name a table, cursor or cursor-variable
Cause: The %ROWTYPE attribute must be applied to an identifier declared as a cursor, cursor variable, or database table. This error occurs when %ROWTYPE follows some identifier that has not been so declared.
Action: Change the declaration or do not apply the %ROWTYPE attribute to the identifier.
PLS-00311 the declaration of "string" is incomplete or malformed
Cause: This occurrence of the identifier cannot be compiled because its type has not been properly defined.
Action: Correct the faulty datatype declaration.
PLS-00312 a positional parameter association may not follow a named association
Cause: When a list of parameters is passed to a subprogram or cursor, if both positional and named associations are used, all positional associations must be placed in their declared order and before all named associations, which can be in any order.
Action: Reorder the parameter list to meet the requirements or use named association only.
PLS-00313 'string' not declared in this scope
Cause: There is no declaration for the given identifier within the scope of reference. The identifier might be misspelled, its declaration might be faulty, or the declaration might be placed incorrectly in the block structure.
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00314 TABLE declarations are not allowed as PL/SQL local variables
Cause: In a precompiled program, the DECLARE TABLE statement was mistakenly used inside an embedded PL/SQL block. If an embedded PL/SQL block refers to a database table that does not yet exist, use the DECLARE TABLE statement to tell the precompiler what the table will look like. However, DECLARE TABLE statements are allowed only in the host program.
Action: Move the DECLARE TABLE statement outside the embedded PL/SQL block. If you want a variable that can store an entire row of data selected from a database table or fetched from a cursor or cursor variable, use the %ROWTYPE attribute.
PLS-00315 PL/SQL TABLE declarations must currently use binary_integer indexes
Cause: In the INDEX BY clause of a PL/SQL table declaration, a datatype other than BINARY_INTEGER was specified. PL/SQL tables can have one column and a primary key. The column can have any scalar type, but the primary key must have type BINARY_INTEGER.
Action: Change the datatype specifier to BINARY_INTEGER.
PLS-00316 PL/SQL TABLEs must currently use a single binary_integer index
Cause: In the INDEX BY clause of a PL/SQL table declaration, a composite primary key was specified. PL/SQL tables must have a simple, unnamed primary key of type BINARY_INTEGER.
Action: Change the faulty clause to INDEX BY BINARY_INTEGER.
PLS-00317 incomplete type "string" was not completed in its declarative region
Cause: An incomplete type declaration was not completed in the declarative region where it was declared.
Action: Complete the type appropriately, then retry the operation.
PLS-00318 type "string" is malformed because it is a non-REF mutually recursive type
Cause: A type-declaration such as:
-- non-REF recursive type type t is record (a t);
or
-- non-REF mutually dependent types type t1; type t2 is record (a t1); type t1 is record (a t2);
was entered.
Action: Use another type to remove the recursion.
PLS-00319 subquery in an IN or NOT IN clause must contain exactly one column
Cause: An invalid expression such as X IN (SELECT A,B ...) was used. When a [NOT]IN clause is used with a subquery, it does not test for set membership. The number of expressions in the [NOT]IN clause and the subquery select list must match. So, in the example above, the subquery must specify at most one column.
Action: Change the subquery to select only one column.
PLS-00320 the declaration of the type of this expression is incomplete or malformed
Cause: In a declaration, the name of a variable or cursor is misspelled or the declaration makes a forward reference. Forward references are not allowed in PL/SQL. A variable or cursor must be declared before it is referenced it in other statements, including other declarative statements. For example, the following declaration of dept_rec raises this exception because it refers to a cursor not yet declared:
DECLARE dept_rec dept_cur%ROWTYPE; CURSOR dept_cur IS SELECT ... ...
Action: Check the spelling of all identifiers in the declaration. If necessary, move the declaration so that it makes no forward references.
PLS-00321 expression 'string' is inappropriate as the left hand side of an assignment statement
Cause: The expression does not designate a variable that can have a value assigned to it. For example, the function SYSDATE cannot appear on the left hand side of an assignment statement such as:
SYSDATE := '01-JAN-1990';
Action: Correct the illegal assignment statement.
PLS-00322 declaration of a constant 'string' must contain an initialization assignment
Cause: A constant declaration lacks the assignment of an initial value. For example, in the following declaration" := 3.14159" is the initialization clause:
"pi constant number := 3.14159;"
Action: Correct the constant declaration by supplying the missing initialization assignment.
PLS-00323 subprogram or cursor 'string' is declared in a package specification and must be defined in the package body
Cause: A subprogram specification was placed in a package specification, but the corresponding subprogram body was not placed in the package body. The package body implements the package specification. So, the package body must contain the definition of every subprogram declared in the package specification.
Action: Check the spelling of the subprogram name. If necessary, add the missing subprogram body to the package body.
PLS-00324 cursor attribute may not be applied to non-cursor 'string'
Cause: This error occurs when a cursor-attribute ("%FOUND", "%NOTFOUND", "%ROWS", "%IS_OPEN", and so on) appears following an identifier that is not declared as a cursor or cursor variable. It occurs, for example, if the variable name my_cur in my_cur%FOUND was not properly declared as a cursor or if the variable declaration was placed incorrectly in the block structure.
Action: Check the spelling and declaration of the identifier. Also confirm that the declaration is placed correctly in the block structure.
PLS-00325 non-integral numeric literal string is inappropriate in this context
Cause: A non-integral numeric literal was used in a context that requires an integer (a number with no digits to the right of its decimal point).
Action: Replace the inappropriate literal with an integer literal.
PLS-00326 IN clause must contain same number of expressions as subquery
Cause: The number of expressions in an IN clause did not equal the number of expressions in a corresponding subquery select list. For example, the following statement is invalid because the IN clause contains two expressions, but the subquery select list contains just one:
... WHERE (ename, sal) IN (SELECT sal FROM emp);
Action: Check the number of expressions in each set, then revise the statement to make the numbers equal.
PLS-00327 "string" is not in SQL scope here
Cause: In a SQL statement, a reference was made to an out-of-scope database object. The referenced object might be misspelled, or the reference might be mixed, as in the following example:
CURSOR c1 IS SELECT dept.dname FROM emp;
Action: Check the spelling of all database objects in the SQL statement, and make sure all references are to objects within the current scope.
PLS-00328 A subprogram body must be defined for the forward declaration of string.
Cause: A subprogram specification was declared, but the corresponding subprogram body was not defined. Write the subprogram specification and body as a unit. An alternative solution is to separate the specification from its body, which is necessary when you want to define mutually recursive subprograms or you want to group subprograms in a package.
Action: Check the spelling of the subprogram name. If necessary, supply the missing subprogram body.
PLS-00329 schema-level type has illegal reference to string
Cause: An attempt was made to make a reference from a schema-level type to something other than a schema-level type.
Action: Replace the illegal reference and retry the operation.
PLS-00330 invalid use of type name or subtype name
Cause: A datatype or subtype specifier was mistakenly used in place of a constant, variable, or expression. For example, the code might look like:
IF emp_count > number THEN ... -- illegal; NUMBER is a datatype specifier
Action: Replace the datatype or subtype specifier with a valid constant, variable, or expression.
PLS-00331 illegal reference to string
Cause: One of the following:
Action: Remove the reference.
PLS-00332 "string" is not a valid prefix for a qualified name
Cause: A malformed qualified name was specified because the prefix is not valid.
Action: Remove or change the reference.
PLS-00333 "string" must match an object-table alias in this context
Cause: The name, appearing in the context of a REF or VALUE, did not resolve to an object-table alias.
Action:
PLS-00334 "string" matches table or view without an alias
Cause: A reference was made to a table or view name without an alias.
Action: Replace the reference with a reference to an object-table alias.
PLS-00335 a package name conflicts with an existing object
Cause: In a CREATE PACKAGE statement, a package (which is a database object that groups logically related PL/SQL types, objects, and subprograms) was given the same name as an existing database object.
Action: Give the package a unique name.
PLS-00336 non-object-table "string" illegal in this context
Cause: A REF or VALUE modifier was specified for a non-object-table. This is not allowed in this context.
Action: Replace the reference with a reference to an object-table alias.
PLS-00337 "string" matches too many object table aliases
Cause: An ambiguous reference was made to an object-table alias; there are at least two object-table aliases in the same scope.
Action: Remove all but one of the references or change the alias names of the remaining.
PLS-00338 unable to resolve "string" as a column or row expression
Cause: A reference was made to a name that could not be resolved as a column or row expression. This occurred in an update or insert statement involving an object-table.
Action: If this is an update statement and you intended to code this as a column reference, fix it as such. If you intended to code this as a row expression, change this to refer to an alias of an object-table.
PLS-00339 "string" matches object-table without a REF or VALUE modifier
Cause: An object-table name was specified without a REF or VALUE modifier.
Action: If you intended to code this with a REF or VALUE modifier, add the modifier; if you intended to code this as a column reference, change the reference appropriately; otherwise, remove the reference.
PLS-00341 declaration of cursor 'string' is incomplete or malformed
Cause: A cursor declaration is improper or an identifier referenced in the cursor declaration was not properly declared. A return type that does not refer to an existing database table or a previously declared cursor or cursor variable might have been specified. For example, the following cursor declaration is illegal because c1 is not yet fully defined:
CURSOR c1 RETURN c1%ROWTYPE IS SELECT ... -- illegal
In this case, a return type does not have to be specified because it is implicit.
Action: Check the spelling and declaration of the cursor name and any identifiers referenced in the cursor declaration. Also confirm that the declaration is placed correctly in the block structure. If a return type was specified, make sure that it refers to an existing database table or a previously declared cursor or cursor variable.
PLS-00351 Not logged onto database 'string'
Cause: An attempt was made to access an Oracle database without being logged on. Probably, an invalid username or password was entered.
Action: Log on to Oracle with a correctly spelled username and password before trying to access the database.
PLS-00352 Unable to access another database 'string'
Cause: An attempt was made to reference an object in a database other than the current local or remote Oracle database.
Action: Correct the reference and make sure the object is in the current Oracle database.
PLS-00353 'string' must name a user in the database
Cause: This error occurs when the username was misspelled or when the user does not exist in the database.
Action: Check the spelling of the username and make sure the user exists.
PLS-00354 username must be a simple identifier
Cause: A qualified username such as scott.accts is not permitted in this context.
Action: Specify a simple username such as scott instead.
PLS-00355 use of pl/sql table not allowed in this context
Cause: A PL/SQL table was referenced in the wrong context (for example, with a remote link).
Action: Remove the PL/SQL table reference or change the context.
PLS-00356 'string' must name a table to which the user has access
Cause: The named table is not accessible to the user. This error occurs when the table name or username was misspelled, the table and/or user does not exist in the database, the user was not granted the necessary privileges, or the table name duplicates the name of a local variable or loop counter.
Action: Check the spelling of the table name and username. Also confirm that the table and user exist, the user has the necessary privileges, and the table name does not duplicate the name of a local variable or loop counter.
PLS-00357 Table,View Or Sequence reference 'string' not allowed in this context
Cause: A reference to database table, view, or sequence was found in an inappropriate context. Such references can appear only in SQL statements or (excluding sequences) in %TYPE and %ROWTYPE declarations. Some valid examples follow:
SELECT ename, emp.deptno, dname INTO my_ename, my_deptno, my_dept .FROM emp, dept WHERE emp.deptno = dept.deptno; DECLARE last_name emp.ename%TYPE; dept_rec dept%ROWTYPE;
Action: Remove or relocate the illegal reference.
PLS-00358 column 'string' exists in more than one table; use qualifier
Cause: The statement is ambiguous because it specifies two or more tables having the same column name. For example, the following statement is ambiguous because deptno is a column in both tables:
SELECT deptno, loc INTO my_deptno, my_loc FROM emp, dept;
Action: Precede the column name with the table name (as in emp.deptno) so that the column reference is unambiguous.
PLS-00359 assignment target in 'string' must have components
Cause: An assignment target was declared that lacks the components needed to store the assigned values. For example, this error occurs if you try to assign a row of column values to a variable instead of a record, as follows:
DECLARE dept_rec dept%ROWTYPE; my_deptno dept.deptno%TYPE; ... BEGIN SELECT deptno, dname, loc INTO my_deptno -- invalid FROM dept WHERE ...
Action: Check the spelling of the names of the assignment target and all its components. Make sure the assignment target is declared with the required components and that the declaration is placed correctly in the block structure.
PLS-00360 cursor declaration without body needs return type
Cause: A cursor declaration lacks either a body (SELECT statement) or a return type. If you want to separate a cursor specification from its body, a return type must be supplied, as in:
CURSOR c1 RETURN emp%ROWTYPE;
Action: Add a SELECT statement or return type to the cursor declaration.
PLS-00361 IN cursor 'string' cannot be OPEN'ed
Cause: A cursor parameter with mode IN cannot be modified, and therefore cannot be opened.
Action: Change the cursor parameter to be IN OUT or OUT.
PLS-00362 invalid cursor return type; 'string' must be a record type
Cause: In a cursor specification or REF CURSOR type definition, a non-record type such as NUMBER or TABLE was specified as the return type. This is not allowed. Only the following return types are allowed:
Action: Revise the cursor specification or REF CURSOR type definition so that it specifies one of the above return types.
PLS-00363 expression 'string' cannot be used as an assignment target
Cause: A literal, constant, IN parameter, loop counter, or function call was mistakenly used as the target of an assignment. For example, the following statement is illegal because the assignment target, 30, is a literal:
SELECT deptno INTO 30 FROM dept WHERE ... -- illegal
Action: Correct the statement by using a valid assignment target.
PLS-00364 loop index variable 'string' use is invalid
Cause: A reference to a loop counter was found in an inappropriate context. For example, the following statement is illegal because the loop counter is used as the terminal value in its own range expression:
FOR j IN 1 .. j LOOP ... -- illegal
Action: Change the loop range expression so that it does not reference the loop counter. If you want to refer in the range expression to another variable with the same name as the loop counter, change either name or qualify the variable name with a label.
PLS-00365 'string' is an OUT parameter and cannot be read
Cause: An attempt was made to assign the value of an OUT parameter to another parameter or variable. Inside a procedure, an OUT parameter acts like an uninitialized variable; therefore, its value cannot be read. For example, the following assignments are illegal:
PROCEDURE calc_bonus (bonus OUT REAL, ...) IS rating REAL; wages REAL; BEGIN ... IF rating > 90 THEN bonus := bonus * 2; -- illegal SELECT sal + bonus INTO wages FROM emp ... -- illegal ... END IF; ... END calc_bonus;
Action: Use an IN OUT parameter instead of the OUT parameter. Inside a procedure, an IN OUT parameter acts like an initialized variable; therefore, its value can be read.
PLS-00366 subtype of a NOT NULL type must also be NOT NULL
Cause: After a subtype was defined as NOT NULL, it was used as the base type for another subtype defined as NULL. That is not allowed. For example, the code might look like:
DECLARE SUBTYPE Weekday IS INTEGER NOT NULL; SUBTYPE Weekend IS Weekday NULL; -- illegal
instead of:
DECLARE SUBTYPE Weekday IS INTEGER NOT NULL; SUBTYPE Weekend IS Weekday;
Action: Revise the subtype definitions to eliminate the conflict.
PLS-00367 a RAISE statement with no exception name must be inside an exception handler
Cause: A RAISE statement not followed by an exception name was found outside an exception handler.
Action: Delete the RAISE statement, relocate it to an exception handler, or supply the missing exception name.
PLS-00368 in RAISE statement, 'string' must be an exception name
Cause: The identifier in a RAISE statement is not a valid exception name.
Action: Make sure the identifier in the RAISE statement was declared as an exception and is correctly placed in the block structure. If you are using the name of a PL/SQL predefined exception, check its spelling.
PLS-00369 no choices may appear with choice OTHERS in an exception handler
Cause: A construct of the form:
WHEN excep1 OR OTHERS =>
was encountered in the definition of an exception handler. The OTHERS handler must appear by itself as the last exception handler in a block.
Action: Remove the identifier that appears with OTHERS or write a separate exception handler for that identifier.
PLS-00370 OTHERS handler must be last among the exception handlers of a block
Cause: One or more exception handlers appear after an OTHERS handler. However, the OTHERS handler must be the last handler in a block or subprogram because it acts as the handler for all exceptions not named specifically.
Action: Move the OTHERS handler so that it follows all specific exception handlers.
PLS-00371 at most one declaration for 'string' is permitted in the declaration section
Cause: A reference to an identifier is ambiguous because there are conflicting declarations for it in the declarative part of a block, procedure, or function. At most one declaration of the identifier is permitted in a declarative part.
Action: Check the spelling of the identifier. If necessary, remove all but one declaration of the identifier.
PLS-00372 In a procedure, RETURN statement cannot contain an expression
Cause: In a procedure, a RETURN statement contains an expression, which is not allowed. In functions, a RETURN statement must contain an expression because its value is assigned to the function identifier. However, in procedures, a RETURN statement lets you exit before the normal end of the procedure is reached.
Action: Remove the expression from the RETURN statement, or redefine the procedure as a function.
PLS-00373 EXIT label 'string' must label a LOOP statement
Cause: The label in an EXIT statement does not refer to a loop. An EXIT statement need not specify a label. However, if a label is specified (as in EXIT my_label), it must refer to a loop statement.
Action: Make sure the label name is spelled correctly and that it refers to a loop statement.
PLS-00374 illegal EXIT statement; it must appear inside the loop labeled 'string'
Cause: An EXIT statement need not specify a label. However, if a label is specified (as in EXIT my_label), the EXIT statement must be inside the loop designated by that label.
Action: Make sure the label name is spelled correctly; if necessary, move the EXIT statement inside the loop to which the label refers.
PLS-00375 illegal GOTO statement; this GOTO cannot branch to label 'string'
Cause: The line and column numbers accompanying the error message refer to a GOTO that branches from outside a construct (a loop or exception handler, for example) that contains a sequence of statements to a label inside that sequence of statements. Such a branch is not allowed.
Action: Either move the GOTO statement inside the sequence of statements or move the labeled statement outside the sequence of statements.
PLS-00376 illegal EXIT statement; it must appear inside a loop
Cause: An EXIT statement was found outside of a loop construct. The EXIT statement is used to exit prematurely from a loop and so must always appear within a loop.
Action: Either remove the EXIT statement or place it inside a loop.
PLS-00377 internal type PLS_INTEGER is not included in this release of PL/SQL
Cause: The type-name INTEGER was used in a declaration.
Action: Do not use.
PLS-00378 invalid compilation unit for this release of PL/SQL
Cause: A compilation unit is a file containing PL/SQL source code that is passed to the compiler. Only compilation units containing blocks, declarations, statements, and subprograms are allowed. This error occurs when some other language construct is passed to the compiler.
Action: Make sure the compilation unit contains only blocks, declarations, statements, and subprograms.
PLS-00379 CASE statements are not included in this release of PL/SQL
Cause: The unit being compiled contains a CASE statement. However, the current release of PL/SQL does not support CASE statements.
Action: Remove the CASE statement from the compilation unit.
PLS-00380 functions and procedures are not included in this release of PL/SQL
Cause: The program being compiled contains a declaration of a FUNCTION or PROCEDURE.
Action: Do not use.
PLS-00381 type mismatch found at 'string' between column and variable in subquery or INSERT
Cause: The datatypes of a column and a variable do not match. The variable was encountered in a subquery or INSERT statement.
Action: Change the variable datatype to match that of the column.
PLS-00382 expression is of wrong type
Cause: An expression has the wrong datatype for the context in which it was found.
Action: Change the datatype of the expression. You might want to use datatype conversion functions.
PLS-00383 type mismatch found at 'string' inside an IN or NOT IN clause
Cause: In a test for set membership such as X NOT IN (SELECT Y ... ), the expressions X and Y do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the expressions so that their datatypes match. You might want to use datatype conversion functions in the select list.
PLS-00384 type mismatch found at 'string' in UPDATE's SET clause
Cause: The column to the left of the equal sign in the SET clause of an UPDATE statement does not match in datatype with the column, expression, or subquery to the right of the equal sign, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the expressions so that their datatypes match. You might want to use datatype conversion functions in the SET clause.
PLS-00385 type mismatch found at 'string' in SELECT...INTO statement
Cause: The expressions to the left and right of the INTO clause in a SELECT...INTO statement do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the expressions so that their datatypes match. You might want to use datatype conversion functions in the select list.
PLS-00386 type mismatch found at 'string' between FETCH cursor and INTO variables
Cause: An assignment target in the INTO list of a FETCH statement does not match in datatype with the corresponding column in the select list of the cursor declaration, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the cursor declaration or change the datatype of the assignment target. You might want to use datatype conversion functions in the select list of the query associated with the cursor.
PLS-00387 INTO variable cannot be a database object
Cause: An item in the INTO list of a FETCH or SELECT statement was found to be a database object. INTO introduces a list of user-defined variables to which output values are assigned. Therefore, database objects cannot appear in the INTO list.
Action: Check the spelling of the INTO list item. If necessary, remove the item from the INTO list or replace it with a user-defined output variable.
PLS-00388 undefined column 'string' in subquery
Cause: A subquery contains a column name that was not defined in the specified table.
Action: Change the expression to specify a column that was defined.
PLS-00389 table, view or alias name "string" not allowed in this context
Cause: A table, view or alias name name corresponding to a regular (non-object) table appeared in an inappropriate context.
Action: Remove the reference, or, if you intended to code this as a column reference, fix it as such.
PLS-00390 undefined column 'string' in INSERT statement
Cause: Check the spelling of the column name, then change the expression so that it refers only to defined columns.
Action: Check the spelling of the column name, then change the expression so that it refers only to defined columns.
PLS-00391 undefined column 'string' in UPDATE statement
Cause: An UPDATE statement refers to a column not defined for the table or view being updated.
Action: Check the spelling of the column name, then revise the statement so that it refers only to defined columns.
PLS-00392 Type mismatch in arguments to BETWEEN
Cause: In a comparison such as X BETWEEN Y AND Z, the expressions X, Y, and Z do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the expressions so that their datatypes match. You might want to use datatype conversion functions.
PLS-00393 wrong number of columns in SELECT...INTO statement
Cause: The number of columns selected by a SELECT...INTO statement does not match the number of variables in the INTO clause.
Action: Change the number of columns in the select list or the number of variables in the INTO clause so that the numbers match.
PLS-00394 wrong number of values in the INTO list of a FETCH statement
Cause: The number of variables in the INTO clause of a FETCH statement does not match the number of columns in the cursor declaration.
Action: Change the number of variables in the INTO clause or the number of columns in the cursor declaration so that the numbers match.
PLS-00395 wrong number of values in VALUES clause of INSERT statement
Cause: The number of columns in an INSERT statement does not match the number of values in the VALUES clause. For example, the following statement is faulty because no column is specified for the value 20:
INSERT INTO emp (empno, ename) VALUES (7788, 'SCOTT', 20);
Action: Change the number of items in the column list or the number of items in the VALUES list so that the numbers match.
PLS-00396 INSERT statement's subquery yields wrong number of columns
Cause: The number of columns in an INSERT statement does not match the number of columns in a subquery select list. For example, the following statement is faulty because no corresponding column is specified for col3:
INSERT INTO emp (ename, empno) SELECT col1, col2, col3 FROM ...
Action: Change the number of items in the column list of the INSERT statement or the number of items in the select list so that the numbers match.
PLS-00397 Type mismatch in arguments to IN
Cause: In a test for set membership such as X IN (Y, Z), the expressions X, Y, and Z do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Action: Change the expressions so that their datatypes match. You might want to use datatype conversion functions.
PLS-00398 wrong number of columns in UNION, INTERSECT, or MINUS expression
Cause: The SELECT clauses to the left and right of a UNION, INTERSECT, or MINUS expression do not select the same number of columns. For example, the following statement is faulty because the select lists do not contain the same number of items:
CURSOR my_cur IS SELECT ename FROM emp INTERSECT SELECT ename, empno FROM emp;
Action: Change the select lists so that they contain the same number of items.
PLS-00399 different types of columns in UNION, INTERSECT, or MINUS expression
Cause: The select lists to the left and right of a UNION, INTERSECT, or MINUS expression select at least one column that is mismatched in datatype. For example, the following statement is faulty because the constant 3 has datatype NUMBER, whereas SYSDATE has datatype DATE:
CURSOR my_cur IS SELECT 3 FROM emp INTERSECT SELECT SYSDATE FROM emp;
Action: Change the select lists so that they match in datatype. You might want to use datatype conversion functions in the select list of one or more queries.
PLS-00400 different number of columns between cursor SELECT statement and return value
Cause: In a cursor declaration, a return type (such as RETURN emp%ROWTYPE) was specified, but the number of returned column values does not match the number of select-list items.
Action: Change the cursor return type or the select list so that the number of returned column values matches the number of select-list items.