| PLS-00240 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | PLS-00248: Invalid Library Syntax |
| Cause | The LIBRARY syntax was entered incorrectly. |
| Action | Correct the LIBRARY syntax and recompile. |
| PLS-00249 | 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 | 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. E.g. CREATE PROCEDURE proc IS EXTERNAL NAME ... LIBRARY ... PARAMETERS(RETURN INDICATOR SHORT, RETURN); |
| PLS-00251 | 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 | 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 db is closed but has the bad luck to have another session open the db 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 | 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 | 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 | 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 (spec or body) and compile again. |
| PLS-00256 | PLS-00256: %s 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 which is previously declared. |
| PLS-00257 | 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 | 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 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 i.e NUMBER, BINARY_INTEGER or PLS_INTEGER |
| PLS-00259 | 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-00260 | PLS-00260: Datetime/Interval constraints must be in range (0 .. 9) |
| Cause | A Datetime/Interval variable or attribute was declared with a constraint outside the legal range. |
| Action | Change the illegal constraint. |
| PLS-00261 | 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. ****** errors until 300 are reserved for External Procedures ********** ****** PH2 errors ********** |
| PLS-00302 | 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 | 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 | 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 name is misspelled --the package specification was never compiled --the compiled package specification is not accessible 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 | 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 | 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 | PLS-00307: too many declarations of "string" match this call |
| Cause | The declaration of a subprogram or cursor 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 or cursor 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 or cursor 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 | 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 | 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 | none |
| PLS-00310 | 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 | 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 | 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 | 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 | 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 | PLS-00315: Implementation restriction: unsupported table index type |
| Cause | In the INDEX BY clause of a PL/SQL table declaration, a datatype other than BINARY_INTEGER, PLS_INTEGER, or VARCHAR2 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 be either a binary integer type or VARCHAR2. |
| Action | Use one of the supported key types in the INDEX BY clause. |
| PLS-00316 | PLS-00316: PL/SQL TABLEs must use a single 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 a binary integer or VARCHAR2 type. |
| Action | Use one of the supported key types in the INDEX BY clause. |
| PLS-00317 | 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 | PLS-00318: type "string" is malformed because it is a non-REF mutually recursive type |
| Cause | A type-declaration such as: -- a non-REF recursive type, for example: type t is record (a t); or -- non-REF mutually dependent types, for example: type t1; type t2 is record (a t1); type t1 is record (a t2); was performed. In these examples, the type is malformed because it participates in a mutually recursive non-REF relationship with itself and possibly other types. |
| Action | Use another type to remove the recursion. |
| PLS-00319 | 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 | 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 | 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 | 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 | 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 | 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", etc.) 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 | 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 | 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 | 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 | 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 | 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 | 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 | PLS-00331: illegal reference to string |
| Cause |
You had an EITHER. 1. an illegal reference to some object in user SYS. to use one of them in an illegal way OR 2. an illegal reference to a remote object type. |
| Action | Remove the reference. |
| PLS-00332 | PLS-00332: "string" is not a valid prefix for a qualified name |
| Cause | You have a malformed qualified name because the prefix is not valid. |
| Action | Remove or change the reference. |
| PLS-00333 | 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 |
1) If there is no object table in the scope, then remove the REF or VALUE; or provide the missing object table reference. 2) If there is an object table in the scope, but you"re not referring to it, add the reference. |
| PLS-00334 | PLS-00334: "string" matches table or view without an alias |
| Cause | You have a reference to a table or view name without an alias. |
| Action | Replace the reference with a reference to an object-table alias. |
| PLS-00335 | 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 | PLS-00336: non-object-table "string" illegal in this context |
| Cause | You have a REF or VALUE modifier for a non-object-table |
| Action | Replace the reference with a reference to an object-table alias. |
| PLS-00337 | PLS-00337: "string" matches too many object table aliases |
| Cause | You have an ambiguous reference 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 | PLS-00338: unable to resolve "string" as a column or row expression |
| Cause | You have a reference 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 | PLS-00339: "string" matches object-table without a REF or VALUE modifier |
| Cause | You have an object-table name appearing 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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: 'record_type_name' 'record_name'%TYPE 'table_name'%ROWTYPE 'cursor_name'%ROWTYPE 'cursor_variable_name'%ROWTYTPE |
| Action | Revise the cursor specification or REF CURSOR type definition so that it specifies one of the above return types. |
| PLS-00363 | 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 | PLS-00364: loop index variable "string" use is invalid |
| Cause | An attempt was made to assign the value of an OUT parameter to |
| Action | Use an IN OUT parameter instead of the OUT parameter. Inside a |
| PLS-00366 | 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 | 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 | 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 | 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 | 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 | PLS-00371: at most one declaration for "string" is permitted |
| Cause | A reference to an identifier was ambiguous because there were multiple declarations for the identifier. At most one local variable with a given identifier is permitted in the declarative part of a block, procedure, or function. At most one label with a given identifier may appear in a block. |
| Action | Check the spelling of the identifier. If necessary, remove all but one declaration of the identifier. |
| PLS-00372 | 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 simply 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 | 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 | 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 | 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 | 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 | 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 | none |
| PLS-00378 | 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 | 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 | 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 | none |
| PLS-00381 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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. |