PLS-00372: In a procedure, RETURN statement cannot contain an expression

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-00371: at most one declaration for string is permitted

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-00370: OTHERS handler must be last among the exception handlers of a block

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-00369: no choices may appear with choice OTHERS in an exception handler

PLS-00369: no choices may appear with choice OTHERS in an exception handler

Cause: A construct of the form WHEN excep1 OR OTHERS =lamp;gt; 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-00368: in RAISE statement, string must be an 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 or SQL predefined exception, check its spelling.

PLS-00367: a RAISE statement with no exception name must be inside an exception handler

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-00366: subtype of a NOT NULL type must also be NOT NULL

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-00364: loop index variable string use is invalid

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-00363: expression string cannot be used as an assignment target

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-00362: invalid cursor return type; string must be a record type

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: lamp;lt;lamp;nbsp;record_type_namelamp;gt; lamp;lt;lamp;nbsp;record_namelamp;gt;%TYPE lamp;lt;lamp;nbsp;table_namelamp;gt;%ROWTYPE lamp;lt;lamp;nbsp;cursor_namelamp;gt;%ROWTYPE lamp;lt;lamp;nbsp;cursor_variable_namelamp;gt;%ROWTYTPE

Action: Revise the cursor specification or REF CURSOR type definition so that it specifies one of the above return types.

PLS-00361: IN cursor string cannot be OPEN ed

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-00360: cursor declaration without body needs return type

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-00359: assignment target in string must have components

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-00358: column string exists in more than one table; use qualifier

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-00357: Table,View Or Sequence reference string not allowed in this context

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-00356: string must name a table to which the user has access

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 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-00355: use of pl or sql table not allowed in this context

PLS-00355: use of pl or sql table not allowed in this context

Cause: A PL or SQL table was referenced in the wrong context (for example, with a remote link).

Action: Remove the PL or SQL table reference or change the context.

PLS-00354: username must be a simple identifier

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-00353: string must name a user in the 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-00352: Unable to access another database string

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-00351: Not logged onto database string

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-00341: declaration of cursor string is incomplete or malformed

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-00339: string matches object-table without a REF or VALUE modifier

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-00338: unable to resolve string as a column or row expression

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-00337: string matches too many object table aliases

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-00336: non-object-table string illegal in this context

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-00335: a package name conflicts with an existing object

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 or SQL types, objects, and subprograms) was given the same name as an existing database object.

Action: Give the package a unique name.

PLS-00334: string matches table or view without an alias

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-00333: string must match an object-table alias in this context

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-00332: string is not a valid prefix for a qualified name

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-00331: illegal reference to string

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-00330: invalid use of type name or subtype name

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 lamp;gt; number THEN ... --illegal; NUMBER is a datatype specifier

Action: Replace the datatype or subtype specifier with a valid constant, variable, or expression.

PLS-00329: schema-level type has illegal reference to string

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-00328: A subprogram body must be defined for the forward declaration of string.

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-00327: string is not in SQL scope here

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-00326: IN clause must contain same number of expressions as subquery

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-00325: non-integral numeric literal string is inappropriate in this context

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-00324: cursor attribute may not be applied to non-cursor string

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-00323: subprogram or cursor string is declared in a package specification and must be defined in the package body

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-00322: declaration of a constant string must contain an initialization assignment

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-00321: expression string is inappropriate as the left hand side of an assignment statement

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-00320: the declaration of the type of this expression is incomplete or malformed

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 or 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-00319: subquery in an IN or NOT IN clause must contain exactly one column

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-00318: type string is malformed because it is a non-REF mutually recursive type

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-00317: incomplete type string was not completed in its declarative region

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-00316: PL or SQL TABLEs must use a single index

PLS-00316: PL or SQL TABLEs must use a single index

Cause: In the INDEX BY clause of a PL or SQL table declaration, a composite primary key was specified. PL or 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-00315: Implementation restriction: unsupported table index type

PLS-00315: Implementation restriction: unsupported table index type

Cause: In the INDEX BY clause of a PL or SQL table declaration, a datatype other than BINARY_INTEGER, PLS_INTEGER, or VARCHAR2 was specified. PL or 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-00314: TABLE declarations are not allowed as PL or SQL local variables

PLS-00314: TABLE declarations are not allowed as PL or SQL local variables

Cause: In a precompiled program, the DECLARE TABLE statement was mistakenly used inside an embedded PL or SQL block. If an embedded PL or 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 or 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-00313: string not declared in this scope

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-00312: a positional parameter association may not follow a named association

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-00311: the declaration of string is incomplete or malformed

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-00310: with %%ROWTYPE attribute, string must name a table, cursor or cursor-variable

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-00309: with %%LAST attribute, string must be a variable of an enumerated type

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-00308: this construct is not allowed as the origin of an assignment

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-00307: too many declarations of string match this call

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-00306: wrong number or types of arguments in call to string

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-00305: previous use of string (at line string) conflicts with this use

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-00304: cannot compile body of string without its specification

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 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-00303: qualifier string must be declared

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-00302: component string must be declared

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.