Cause: The client (caller) of PL/SQL has parsed a bind variable that it has informed to be 'bad'.
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.
Cause: This error message is from the parser. It found a token (language element) that is inappropriate in this context.
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.
Cause: More than one forward declaration of a type is redundant.
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.
Cause: No declaration for the exception name referenced in an EXCEPTION_INIT pragma was found within the scope of the pragma.
Cause: A bind variable, that is, an identifier prefixed with a colon, was found in an inappropriate context.
Cause: A Comment had a comment initiator (/*), but before the
Cause: A quoted identifier had a beginning quote ("), but before the ending quote (") was found, an end-of-line marker was encountered.
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.
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.
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.
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.
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.
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.
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.
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.
Cause: The PL/SQL compiler has exceeded one of its capacity limits. The compiler cannot proceed.
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.
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.
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.
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.
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).
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).
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).
Cause: The second argument (actual parameter) passed to the named pragma (compiler directive) was not the name of a procedure or function, as required. The parameter cannot be a non-static method. The parameter might be misspelled or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Cause: One of the parameters passed to this pragma was not among the list of allowed values. The parameter might be misspelled, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
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).
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).
Cause: The fourth argument (actual parameter) passed to the named pragma (compiler directive) was not a numeric literal, as required. The parameter might be miscoded, or the pragma syntax might be faulty (for example, a comma might be missing between two parameters).
Cause: Invalid precision was specified for a signed or unsigned binary type.
Cause: The subprogram was found to have two external NAME specifications.
Cause: The subprogram was found to have two external LIBRARY specifications.
Cause: The subprogram was found to have two external PARAMETER STYLE specifications.
Cause: The subprogram was found to have two external PARAMETER STYLE specifications.
Cause: The subprogram was found to have two external LANGUAGE specifications.
Cause: The subprogram was found to have two external CALLING STANDARD specifications.
Cause: The subprogram was found to have two external WITH CONTEXT specifications.
Cause: The subprogram was found to have two external TRUSTED/UNTRUSTED specifications.
Cause: A zero-length string was found for the LIBRARY or ASSEMBLY file specification.
Cause: The subprogram was found to have two PRAGMA RESTRICT_REFERENCES.
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.
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.
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.
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.
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.
Cause: A procedure was declared as a MAP, ORDER or CONSTRUCTOR method. Only functions can be MAP, ORDER or CONSTRUCTOR methods.
Cause: A null constraint was specified for an attribute in an object. This is not supported.
Cause: An AUTHID or DEFAULT COLLATION clause was specified for a subprogram inside a package or type. These clauses are only supported for top-level stored procedures, packages, and types.
Cause: The only two allowed options for AUTHID are CURRENT_USER and DEFINER.
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).
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).
Cause: This feature is not yet implemented.
Cause: A CALL statement was found in PL/SQL source.
Cause: The contents of the date, time, timestamp or interval literal did not match the expected format.
Cause: keyword BULK is used illegally. For example, BULK is used without INTO clause
Cause: A method or object type modifier was specified more than once.
Cause: The method or object type modifier specified conflicts with an earlier modifier. For example, a FINAL modifier cannot be combined with a NOT FINAL modifier.
Cause: An OPEN cursor statement or cursor FOR loop can only invoke a SELECT statement, not an UPDATE, INSERT or DELETE.
Cause: The subprogram was found to have two dedicated AGENT specifications.
Cause: The string literal was longer than 32767 bytes.
Cause: SPACE, TAB or RETURN was used as alternative quote delimiter.
Cause: The expression contained a syntax or semantic error, or it did not have a boolean type or its evaluation raised an exception.
Cause: A preprocessor token was used inappropriately.
Cause: A preprocessor directive was not ended properly.
Cause: The expression contained a syntax or semantic error, or it did not have a character type or its evaluation raised an exception.
Cause: $ERROR directive was used. This is an expected error message.
Cause: A preprocessor directive was used in a compilation unit for which conditional compilation is not supported.
Cause: An unsupported preprocessor directive was used.
Cause: Identifier was declared using an empty string,
Cause: The library unit used more bind variables than permitted. (The current limit is 65535 bind variables in one library unit.)
Cause: You tried 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.
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.
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.
Cause: A pseudocolumn or proscribed function was used in a procedural statement. The SQL pseudocolumns (LEVEL, 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.
Cause: An aggregate, that is, a parenthesized list of values such as (7788, 'SCOTT', 20), was found in an inappropriate context.
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.
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.
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.
Cause: In a query, a table referenced by the select list is not named in the FROM clause.
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).
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.
Cause: The CASE statement is too big. The compiler did not have enough storage to process it.
Cause: The PL/SQL compiler could not find package STANDARD in the current Oracle database. To compile a program, PL/SQL needs package STANDARD.
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.
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
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.
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.
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.
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.
Cause: A qualified name such as A.B or A.B.C is not permitted here.
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).
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).
Cause: An identifier being referenced as a parameterless function actually represents a procedure.
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.
Cause: The prefix in a qualified name was a subprogram or cursor which was not in an enclosing scope; i.e., a subprogram or cursor name is being used as a scope qualifier for a reference to an entity (within that subprogram or cursor) that is not in scope. Example: declare x number; type t1 is record (a number); function f return t1 is a number; begin x := f.a; -- legal use of function "f" as a scope qualifier; -- resolves to local variable "a" in function "f". x := f().a; -- legal reference to component "a" of returned record end; begin x := f.a; -- illegal use of function "f" as a scope qualifier x := f().a; -- legal reference to component "a" of returned record end;
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 ...
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.
Cause: An attempt was made to declare a variables to be of type LONG. Only columns can be of type LONG. CAUSE: The identifier is a formal parameter which is being used in the context of a default expression value for a formal parameter in the same formal parameter list. E.g.: procedure p(j number, k number := j).
Cause: An attribute expression, such as SQL%NOTFOUND, was used in a SQL statement, but attribute expressions are allowed only in procedural statements.
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 := 0, ...) IS ... However, only IN parameters can be initialized to default values.
Cause: A proscribed function was used in a SQL statement. Certain functions such as SQLCODE and SQLERRM can be used only in procedural statements.
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.
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.
Cause: A subprogram cannot specify both PARAMETER STYLE SQL and an explicit PARAMETERS list. Use PARAMETER STYLE GENERAL to supply default PARAMETERS list types.
Cause: An unsuccessful attempt was made to convert a parameter to the specified external parameter type.
Cause: The external type specified is not valid for one of the following: INDICATOR, LENGTH, MAXLEN, TDO, DURATION, CHARSETID, or CHARSETFORM.
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.
Cause: An external parameter name was specified that does not match one in the formal parameter list.
Cause: An inappropriate external parameter type was specified for the SQLCODE parameter.
Cause: An inappropriate external parameter type was specified for the RETURN indicator, LENGTH, TDO, or DURATION.
Cause: An inappropriate external parameter type was specified for the SQLSTATE parameter.
Cause: An inappropriate external parameter type was specified for the CONTEXT parameter.
Cause: An inappropriate external parameter type was specified for the SQLNAME parameter.
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.
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.
Cause: A PARAMETER STYLE clause was placed in the external subprogram body.
Cause: The LIBRARY or ASSEMBLY name is missing from the external subprogram body.
Cause: The LIBRARY syntax was entered incorrectly.
Cause: CONTEXT was used in a WITH CONTEXT or a PARAMETERS clause. This is invalid.
Cause: The usage of Keywords such as MAXLEN, LENGTH, CHARSETID, CHARSETFORM RETURN in the parameters clause was incorrect
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);
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'.
Cause: The parameter clause does not have a matching parameter for a parameter specified in the formal parameter list.
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.
Cause: CALL Specification formal parameters default values are disallowed.
Cause: The supplied external library or assembly name in the external clause is not a valid alias library or assembly.
Cause: An EXTERNAL Clause was detected in a TYPE Specification or a PACKAGE specification.
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
Cause: It is mandatory to specify the rights model if a PL/SQL PROCEDURE, FUNCTION, PACKAGE OR TYPE HAS CALL-Specifications
Cause: A Datetime/Interval variable or attribute was declared with a constraint outside the legal range.
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.
Cause: An ACCESSIBLE BY clause was specified in the wrong place. This clause may be specified on top-level stored procedures, packages, and types, and also on subprograms which are directly contained in a package. This clause may not be specified on methods.
Cause: An ACCESSIBLE BY clause was specified in a package body for an item which did not have an equivalent clause in the package specification. In a package body, this clause can only be specified on externally visible subprograms, and the subprogram specification and body must have equivalent clauses. This clause cannot be specified on package-local or nested subprograms.
Cause: A GOTO was attempted to something which is not a label (for example, a variable).
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.
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.
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.
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.
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.
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.
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.
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.
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.
Cause: This occurrence of the identifier cannot be compiled because its type has not been properly defined.
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.
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.
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.
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.
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.
Cause: An incomplete type declaration was not completed in the declarative region where it was declared.
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.
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.
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 ... ...
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';
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;"
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.
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.
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).
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);
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;
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.
Cause: An attempt was made to make a reference from a schema-level type to something other than a schema-level type.
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
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.
Cause: You have a malformed qualified name because the prefix is not valid.
Cause: The name, appearing in the context of a REF or VALUE, did not resolve to an object-table alias.
Cause: You have a reference to a table or view name without an alias.
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.
Cause: You have a REF or VALUE modifier for a non-object-table
Cause: You have an ambiguous reference to an object-table alias; there are at least two object-table aliases in the same scope.
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.
Cause: You have an object-table name appearing without a REF or VALUE modifier.
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.
Cause: An attempt was made to access an Oracle database without being logged on. Probably, an invalid username or password was entered.
Cause: An attempt was made to reference an object in a database other than the current local or remote Oracle database.
Cause: This error occurs when the username was misspelled or when the user does not exist in the database.
Cause: A qualified username such as scott.accts is not permitted in this context.
Cause: A PL/SQL table was referenced in the wrong context (for example, with a remote link).
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.
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;
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;
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 ...
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;
Cause: A cursor parameter with mode IN cannot be modified, and therefore cannot be opened.
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
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
Cause: An attempt was made to assign the value of an OUT parameter to
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;
Cause: A RAISE statement not followed by an exception name was found outside an exception handler
Cause: The identifier in a RAISE statement is not a valid exception name.
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.
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.
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.
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.
Cause: The label in the EXIT or CONTINUE statement did not refer to a LOOP statement. An EXIT or CONTINUE statement need not specify a label. However, if a label is specified (as in EXIT my_label or CONTINUE my_label), it must refer to a LOOP statement.
Cause: The label in the EXIT or CONTINUE statement did not refer to a loop statement. An EXIT or CONTINUE statement need not specify a label. However, if a label is specified (as in EXIT my_label or CONTINUE my_label), the EXIT or CONTINUE statement must be inside the LOOP statement designated by that label.
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.
Cause: An EXIT or CONTINUE statement was found outside of a loop construct. The EXIT statement is used to exit prematurely from a loop and the CONTINUE statement is used to begin the next iteration of a loop; each must always appear within a loop.
Cause: The type-name INTEGER was used in a declaration.
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.
Cause: The unit being compiled contains a CASE statement. However, the current release of PL/SQL does not support CASE statements.
Cause: The program being compiled contains a declaration of a FUNCTION or PROCEDURE.
Cause: The datatypes of a column and a variable do not match. The variable was encountered in a subquery or INSERT statement.
Cause: An expression has the wrong datatype for the context in which it was found.
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.
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.
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.
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.
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.
Cause: A subquery contains a column name that was not defined in the specified table.
Cause: A table, view or alias name name corresponding to a regular (non-object) table appeared in an inappropriate context.
Cause: Check the spelling of the column name, then change the expression so that it refers only to defined columns.
Cause: An UPDATE statement refers to a column not defined for the table or view being updated.
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.
Cause: The number of columns selected by a SELECT...INTO statement does not match the number of variables in the INTO clause.
Cause: The number of variables in the INTO clause of a FETCH statement does not match the number of columns in the cursor declaration.
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);
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 ...
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.
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;
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;
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.
Cause: In a cursor declaration, a return type (such as RETURN emp%ROWTYPE) was specified, but a returned column value and its corresponding select-list item have different datatypes.
Cause: A cursor was declared with a SELECT statement that contains duplicate column names. Such references are ambiguous.
Cause: A FETCH statement was unable to assign a value to an assignment target in its INTO list because the target is not a legally formed and declared variable. For example, the following assignment is illegal because 'Jones' is a character string, not a variable: FETCH my_cur INTO 'Jones';
Cause: The use of the CURRENT OF cursor_name clause is legal only if cursor_name was declared with a FOR UPDATE clause.
Cause: A subquery was used in an inappropriate context, such as: if (SELECT deptno FROM emp WHERE ... ) = 20 then ... Subqueries are allowed only in SQL statements.
Cause: A query select list is not the same length as the list of targets that will receive the returned values. For example, the following statement is faulty because the subquery returns two values for one target: UPDATE emp SET ename = (SELECT ename, empno FROM emp WHERE ename = 'SMITH') ...
Cause: An asterisk (*) was used as an abbreviation for a list of column names. However, in this context the column names must be written out explicitly.
Cause: An UPDATE or INSERT statement has a column list that contains duplicate column names.
Cause: The same variable appears twice in the INTO list of a SELECT or FETCH statement.
Cause: When a user-defined record was declared, the same name was given to two fields. Like column names in a database table, field names in a user-defined record must be unique.
Cause: In a statement of the form aggregate = subquery, the numbers of values in the aggregate and subquery are unequal. For example, the code might look like ... WHERE (10,20,30) = (SELECT empno,deptno FROM emp WHERE...);
Cause: A parenthesized list of values separated by commas (that is, an aggregate) was used in the wrong context. For example, the following usage is invalid: WHERE (col1, col2) > (SELECT col3, col4 FROM my_table ...) However, an equal sign can take a list of values and a subquery as left- and right-hand-side arguments, respectively. So, the following usage is valid: WHERE (col1, col2) = (SELECT col3, col4 FROM my_table ...)
Cause: The identifier in a CURRENT OF clause names an object other than a cursor.
Cause: A table name or alias was used to qualify a column reference, but the column was not found in that table. Either the column was never defined or the column name is misspelled.
Cause: An OUT or IN OUT formal parameter was used in a function specification.
Cause: The third argument of DECODE is NULL.
Cause: A database table, view, or column was specified in a SQL statement that does not exist, or the privileges required to access the table or view were not granted.
Cause: A host array was passed (by an Oracle Precompiler program, for example) to a PL/SQL subprogram for binding to a PL/SQL table parameter. However, the datatypes of the array elements and PL/SQL table rows are incompatible. So, the binding failed.
Cause: An attempt was made to reference a remote cursor attribute, which is not allowed. For example, the code might look like IF SQL%NOTFOUND@newyork THEN ...
Cause: An attempt was made to call a built-in PL/SQL function remotely, which is not allowed. For example, the code might look like my_sqlerrm := SQLERRM@newyork; or INSERT INTO emp VALUES (my_empno, STANDARD.RTRIM@newyork(my_ename), ...);
Cause: Directly or indirectly, a synonym was defined in terms of itself, creating a circular definition.
Cause: A host variable was passed (by an Oracle Precompiler program, for example) to PL/SQL for binding. However, its datatype is not compatible with any PL/SQL datatype. So, the binding failed.
Cause: A column alias was used in the ORDER BY clause of a SELECT statement that uses a UNION, INTERSECT, or MINUS set operator. This is not allowed. In such cases, expressions in the ORDER BY clause must be unsigned integers that designate the ordinal positions of select-list items.
Cause: An attempt was made to call a remote subprogram whose defaulted parameters depend on package state, which is not allowed. When calling remote subprograms, the actual parameters must be passed explicitly if the corresponding formal parameters depend on package state.
Cause: When a cursor variable was declared as the formal parameter of a
Cause: An attempt was made to call a remote subprogram whose defaulted parameter value is calculated using a builtin operation. If the calling system uses a different version of package STANDARD than does the called system, a defaulted expression must be either a simple numeric or string literal, NULL, or a direct call to a user-written function.
Cause: The INTO clause of a SELECT INTO statement was omitted. For example, the code might look like SELECT deptno, dname, loc FROM dept WHERE ... instead of SELECT deptno, dname, loc INTO dept_rec FROM dept WHERE ... In PL/SQL, only a subquery is written without an INTO clause.
Cause: - INTO clause and RETURNING clause cannot be use in the same statement - RETURNING clause is currently not supported for object type columns, LONG columns, records, %rowtypes, remote tables and INSERT with subquery. This is as ORA-28815.
Cause: FORALL iteration variable can only be used as a subscript. It cannot be used directly or as a part of an expression.
Cause: More than one index specified to access SQL bulk attribute.
Cause: SELECT statement contains both the FORALL and BULK COLLECT INTO phrases.
Cause: PL/SQL compiler could not find the entries (such as type declarations) that should exist in the package STANDARD.
Cause: An attempt was made to use an unsupported type for a record field. In this release, the use of the SQL92 datetime types (time, timestamp, time with time zone, timestamp with time zone, interval year to month, interval day to second) are not supported in record fields.
Cause: The DML (SELECT/INSERT/DELETE/UPDATE) statement inside the FORALL statement does not contain BULK IN-BIND variables.
Cause: table(bulk_index).field is not supported at run-time.
Cause: RETURNING table(bulk_index) is not supported.
Cause: The evaluation value in the LIMIT clause of a bulk fetch was found in an inappropriate context. For example, the following statement is illegal because the LIMIT clause in a bulk fetch expects a numeric value. FETCH c1 BULK COLLECT INTO var_tab LIMIT '22333'; -- illegal
Cause: A LIMIT clause is used within a non-bulk fetch
Cause: A reference to a FORALL statement's bulk IN-bind variable was found in a context in which it is not permitted. For example, such variables are not permitted in expressions in the USING clause of a dynamic SQL statement: forall j in 1..Users.Count() execute immediate ' insert into System_Users(Username) values :U' using Upper(Users(j));
Cause: The specified name was not a label. An EXIT or CONTINUE statement does not require a label, but when the optional name appears, it must be a label.
Cause: The procedure CONTINUE appears in STANDARD but that procedure may not be called either with its name alone or with the prefix STANDARD. It exists only to help in analysis of the CONTINUE statement.
Cause: A variable declaration uses a type that is declared PRIVATE in some other compilation unit.
Cause: A packaged function cannot be called from SQL statements unless its purity level is asserted by coding a RESTRICT_REFERENCES pragma in the package specification. The pragma, which is used to control side effects, tells the PL/SQL compiler to deny the packaged function read/write access to database tables, public packaged variables, or both. A SQL statement that violates the pragma will cause a compilation error.
Cause: A reference to a remote object tables or user-defined type column was found.
Cause: A reference to a remote table or subquery was found in a sql statement with a returning into clause.
Cause: dynamicly OPEN a REF CURSOR that has RETURN type. However, only REF CURSOR without RETURN type can be OPEN'ed by an embebded dynamic OPEN statement.
Cause: the given variable is not a cursor and therefore cannot be OPEN'ed or FETCH'ed from.
Cause: an expression of wrong type is in USING or dynamic RETURNING clause. In USING or dynamic RETURNING clause, an expression cannot be of non-SQL types such as BOOLEAN, INDEX TABLE, and record.
Cause: The subprogram is not REPEATABLE and cannot be called from a REPEATABLE subprogram.
Cause: Having one of the followings feature in the REPEATABLE subprogram: dynamic SQL statements or autonomous transaction.
Cause: Repeatable subprogram can neither read database state (RNDS), write database state (WNDS), read package state (RNPS), nor write package state (WNPS).
Cause: REPEATABLE is declared at the subprogram's specification, but not at its body, or vice versa.
Cause: the nested subprogram of a REPEATABLE subprogram is not declared as REPEATABLE. If a subprogram is REPEATABLE, all of its nested subprograms has to be declared as REPEATABLE.
Cause: An exception appears in two different WHEN clauses (that is, two different exception handlers) in the exception-handling part of a PL/SQL block or subprogram.
Cause: Using the EXCEPTION_INIT pragma, different exceptions were initialized to the same Oracle error number; then, they were referenced in different exception handlers within the same exception-handling part. Such references conflict.
Cause: An identifier not declared as an exception appears in an exception handler WHEN clause. Only the name of an exception is valid in a WHEN clause.
Cause: In a SELECT statement, the select list was enclosed in parentheses, as in: SELECT (deptno, dname, loc) FROM dept INTO ... This breaks the rules of SQL syntax. Parentheses are not required because the keywords SELECT and FROM delimit the select list.
Cause: A variable was referenced in a way that is inconsistent with its datatype. For example, a scalar variable might have been mistakenly referenced as a record, as follows: DECLARE CURSOR emp_cur IS SELECT empno, ename, sal FROM emp; emp_rec emp_cur%ROWTYPE; my_sal NUMBER(7,2); BEGIN ... total_sal := total_sal + my_sal.sal; -- invalid ...
Cause: The datatype specifier in a declaration or expression does not designate a legal type. For example, the %TYPE attribute might not have been added to a declaration, as in DECLARE my_sal emp.sal%TYPE; my_ename emp.ename; -- missing %TYPE ... When declaring a constant or variable, to provide the datatype of a column automatically, use the %TYPE attribute. Likewise, when declaring a record, to provide the datatypes of a row automatically, use the %ROWTYPE attribute.
Cause: In a query, a select-list item refers to a table in the FROM clause but not to a database column.
Cause: A constant, variable, function call, or incomplete statement was used where a statement was expected. For example, instead of calling a function from an expression, it might have been called as a statement (as if it were a procedure).
Cause: A constant or variable was used where a numeric literal is required. For example, the code might look like my_ename VARCHAR2(max_len); instead of my_ename VARCHAR2(15); When specifying the maximum length of a VARCHAR2 variable, an integer literal must be used.
Cause: If a package spec p declares a function f, that function may not be used in any variable declarations in that same package spec. This is because of a circular instantiation problem: in order to fully instantiate the package spec, the variable must be initialized. To initialize the variable, the function body code in the package body must be executed. That requires that the package body be instantiated. However, the package body cannot be instantiated until the package spec is fully instantiated.
Cause: A reference to a server-side object (e.g. a table column) or function (a group function such as SUM, AVG, MIN, MAX, ... ) was found in a context where only PL/SQL objects may be present (such as within the parameter list of a local function or as the index of a (local) PL/SQL table.)
Cause: The INTO list of a SELECT or FETCH specified more than a single record- type target and the column types required coercion into a record to match the INTO list. This is type checked as correct, but not yet supported.
Cause: Type checking indicated the columns in a SELECT or FETCH were being collected into a record in the INTO list. The record was burst into its fields. There were not enough fields in the record for each of the columns.
Cause: Type checking indicated the columns in a SELECT or FETCH were being collected into a record in the INTO list. The record was burst into its fields. There were not enough columns to fill all of the fields in the record.
Cause: - When BULK syntax (e.g. BULK COLLECT INTO) is used to retrieve data, every variable in the INTO list has to be of type that is a collection of the type of the corresponding column. - When BULK is NOT used, every variable in the INTO list has to be of compatible type with the corresponding column.
Cause: A variable or constant was declared to be of a type whose declaration appears later in the compilation unit; or, a type or subtype was declared in terms of another type whose declaration appears later in the compilation unit.
Cause: A SELECT or FETCH may specify a column list to be coerced into a variable which is a collection of records. This is type checked as correct, but not yet supported because of the implicit layout change required.
Cause: An operator binding fucntion cannot be found in the specified scope.
Cause: In a function body, a RETURN statement was used that contains no expression. In procedures, a RETURN statement contains no expression because the statement simply returns control to the caller. However, in functions, a RETURN statement must contain an expression because its value is assigned to the function identifier.
Cause: In a declaration, the datatype NUMBER_BASE (for example) was mistakenly specified. The datatypes CHAR_BASE, DATE_BASE, MLSLABEL_BASE, and NUMBER_BASE are for internal use only.
Cause: An attempt was made to define a type other than TABLE or RECORD, but these are the only user- defined types allowed in this release of PL/SQL. For example, the following type definition is illegal: TYPE Byte IS INTEGER(2); -- illegal
Cause: An attempt was made to define a constrained subtype, but only unconstrained subtypes are allowed in this release of PL/SQL. For example, the following type definition is illegal: SUBTYPE Acronym IS VARCHAR2(5); -- illegal
Cause: In a TABLE type definition, a nested record type was specified as the element type. This is not allowed. All fields in the record must be scalars.
Cause: A datatype specifier was used instead of an expression in the RETURN statement of a user-defined function, as shown in the example below. Do not confuse the RETURN statement, which sets the function identifier to the result value, with the RETURN clause, which specifies the datatype of the result value. FUNCTION credit-rating (acct_no NUMBER) RETURN BOOLEAN IS BEGIN ... RETURN NUMBER; -- should be an expression END;
Cause: Illegal syntax was used to call a parameter-less function that returns a record or a PL/SQL table of records. When calling a function that takes parameters and returns a record, you use the following syntax to reference fields in the record: function_name(parameters).field_name However, you cannot use the syntax above to call a parameter-less function because PL/SQL does not allow empty parameter lists. That is, the following syntax is illegal: function_name().field_name -- illegal; empty parameter list You cannot just drop the empty parameter list because the following syntax is also illegal: function_name.field_name -- illegal; no parameter list.
Cause: When a FLOAT variable was declared, its precision and scale were specified, as shown in the following example: DECLARE Salary FLOAT(7,2); However, a scale for FLOAT variables cannot be specified; only a precision can be specified, as in salary FLOAT(7);
Cause: n a RECORD definition, one of the fields was declared as a PL/SQL table of records. This is not allowed. A record can be the component of another record (that is, records can be nested), but a PL/SQL table of records cannot be the component of a record.
Cause: An attempt was made to reference a remote packaged variable or cursor. This is not allowed. Instead, add to the remote package a function that returns the value of the variable or cursor.
Cause: In a SQL statement, do not call a PL/SQL function having a return type that can not be handled by SQL. For example, type BOOLIAN, records and indexed-tables are not supported by SQL and functions returneing such values can not be called from SQL.
Cause: This INSERT statement provides REF INTO clause, which is only legal when the table specified in the INTO clause is an object table.
Cause: In INSERT statement with REF INTO clause, the type of the data item must be REF to the type of the table used in INTO clause.
Cause: In the INSERT statement operating on typed tables (tables of objects), the type of a non-aggregate value did not match the object type of the table.
Cause: In an INSERT statement with subquery, at lease one of the elements of the select list was not type-compatible with the corresponding column of the table in the INTO clause. This error indicates that the subquery should be rewritten to match the structure of the target table.
Cause: A VALUES clause was entered without a list of SQL data items in parentheses. In all INSERT statements with an explicit column list, the VALUES clause must contain a list of SQL data items in parentheses. For example: INSERT INTO my_tab (a,b,c) VALUES (1,2,my_variable);
Cause: In an INSERT statement with typed tables, an aggregate was used when an object type item was expected.
Cause: A MAP member function was declared with a parameter. Map member functions can have only one parameter: the default SELF parameter. Map methods must be declared without any parameters. The compiler adds the SELF parameter.
Cause: An order member function was declared without the user-specified parameter. Order member functions have two parameters, one is the default SELF parameter which is added by the compiler. the second parameter is added by the user and must declare an order method which must be the same type as the containing object type.
Cause: The MAP member function was written such that it returns something other than a scalar type.
Cause: An order member function was written such that it returns something other than an integer type.
Cause: An order member function was declared without the user- specified parameter. Order member functions have two parameters, one is the default SELF parameter which is added by the compiler. the second parameter is added by the user and must declare an order method which must be the same type as the containing object type.
Cause: A map or order function was not provided for a relational comparison. Only equality comparisons may be used when a map or order function is not supplied.
Cause: Within stand alone PL/SQL, an attempt was made to compare objects without a map or order function.
Cause: Either a PRAGMA RESTRICT_REFERENCES was not specified or it was specified without one of the following: WNDS, WNPS, RNPS, or RNDS.
Cause: You declared parameter to an ORDER function to have OUT or IN OUT mode.
Cause: In an INSERT statement, an attempt was made to use a column name that is not an identifier. In any INSERT statement with explicit column list a column name must be a simple identifier.
Cause: An attempt was made to use an invalid type for an object type attribute.
Cause: An attempt was made to use an unsupported type in a VARRAY or TABLE type.
Cause: The target of a REF can only be a complete or an incomplete object type.
Cause: An attempt was made to create a table of a type which cannot be queried. Tables of such types are not supported.
Cause: An attempt was made to do one of the following: define a table type which contained nested collection types. or define an object table that has (perhaps nested) another table type or VARRAY type.
Cause: An attempt was made to do one of the following: define a VARRAY type containing a nested collection type or LOB or define a VARRAY type of an object type that has a nested attribute which is one of NESTED TABLE, VARRAY or LOB type.
Cause: The expression of the form refvar.field was entered. This is not supported in PL/SQL, ver 8.0.
Cause: A VARRAY type was declared with a non-positive limit, for example VARRAY(0).
Cause: The specified subprogram is declared in an object type's specification, but is not defined in the object type body.
Cause: The specified subprogram is declared in an object type's body, but is not defined in the object type's specification. Notice cursor bodies can exist without a specification.
Cause: An object was declared inside a local scope (Function, Procedure, or anonymous block), or in a package scope which is not supported.
Cause: A length or size that is too large was specified for a data item.
Cause: A server type is being created with an embedded CLOB or NCLOB atttribute which uses a varying-width character set.
Cause: An attempt was made to define a PLSQL table that contained a (possibly deeply) nested table type or VARRAY. Nested collection types are not supported.
Cause: SELF was declared as a ref parameter to a member function or procedure. SELF is not supported as a REF.
Cause: A name of an operator is used as a qualifier or appears outside from sql context.
Cause: A character set specification was made on a type that does not require one.
Cause: The character set ANY_CS was specified when it is not allowed.
Cause: ANY_CS or %CHARSET was used to reference an ANY_CS parameter which is not a CHAR, VARCHAR2, or CLOB type. ANY_CS or %CHARSET is not allowed for fields of a record , object, elements of a collection, etc.
Cause: An unrecognized name appears in a character set specification.
Cause: A redundant or conflicting character set was specified.
Cause: A default expression has been specified for a SQL operator.
Cause: An expression was used that has the wrong character set for this context.
Cause: An expression was used that contains an incorrect character set. The actual argument has a character set conflict. If a default argument value is being used, it might be in conflict with some actual argument that must have the same character set.
Cause: The current function was definied to return something other than a data type.
Cause: CAST (in PLSQL) was used outside of a DML scope.
Cause: use of lob argument in call to remote server
Cause: Incomplete library units that are potential targets of REF dependencies must be completed so that they continue to remain potential targets of REF dependencies (since there might be library units with REF dependencies on this library unit). Potential REF targets include complete and incomplete object types. This error happened because an attempt was made to complete a potential REF target as something other than a potential REF target.
Cause: A lob, date, boolean, rowid, or mlslabel type was constrained with a length specification. For example: X BLOB(5);
Cause: You attempted to pass NULL to a NOT NULL constrained parameter.
Cause: You attempted to use TABLE expression, from a non-nested table
Cause: A constant literal is either too large or too small to fit in an Oracle number
Cause: Number of columns in the collection returned by MULTISET and the number of columns for the CAST type don't match. For example: create type tab_obj as object (n number); create type tab1 as table of tab_obj; create table tab2 (col1 number, col2 number); select CAST(MULTISET(select col1, col2 from tab2) as tab1) from tab2;
Cause: Remote link is used with on client side
Cause: "number" types cannot have a range. user-defined aggregate types and integer types cannot have scale or precision specified. Example: "x number(5,3)" is acceptable but "x number range 1..10" is not.
Cause: A variable declared with %TYPE or %ROWTYPE cannot have a scale, precision, or range constraint. Example: x y%TYPE(10) is not acceptable. It is legal to add "NOT NULL" or non-conflicting CHARACTER SET constraints to anchored type declarations.
Cause: An attempt was made to declare an object type to have a supertype, but the specified supertype was not itself an object type. Object types can inherit only from other object types.
Cause: An attempt was made to declare an opaque type with a supertype.
Cause: An attempt was made to declare an attribute in an opaque type.
Cause: An attempt was made to declare a fixed-length opaque type without specifying an explicit size.
Cause: An attempt was made to specify an explicit size for an opaque type, but the specified size was out of the valid range.
Cause: An attempt was made to name a support library for an opaque type, but the name refers to an object that is not a library.
Cause: An attempt was made to name a parameter SELF when declaring a static method. SELF is reserved as a parameter name in methods, to hold the object instance on which the method is applied. A parameter named SELF is not allowed in static methods because static methods do not apply to a particular object instance.
Cause: An attempt was made to use an object instance value, not a typename, as the qualifier of the name of a method invocation, but only a typename can be used as the qualifier when calling a static method.
Cause: An attempt was made to use the name of an object instance attribute in the body of a static method, or in an initialization default value on another attribute. If the instance attribute is not qualified with a particular object instance that supplies a value, the instance attribute can be named only when it is inside a member method.
Cause: Table of non adt type is defined.
Cause: An attempt was made to create a subtype UNDER a FINAL type.
Cause: One of the following features was used in a wrong context: pragma AUTONOMOUS_TRANSACTION, dynamic SQL statements, (e.g. EXECUTE IMMEDIATE), and bulk binds. These listed features can only be used in server-side programs but not client-side programs.
Cause: You have defined a typed-table of a non-object type.
Cause: The default value initialization of a parameter in a subprogram body contained in a package body did not match that of the corresponding subprogram specification in the corresponding package specification.
Cause: The SELF parameter was declared as an OUT parameter.
Cause: This feature is not yet implemented.
Cause: This exception is raised for the following errors: - the expression in INTO clause of OPEN or RETURNING statement is neither of legal SQL datatypes nor of PL/SQL RECORD datatype - a collection of records is used in INTO clause of OPEN or RETURNING statement. - a record or a collection of records is used in BULK COLLECT INTO
Cause: An object is compared with NULL using a relational operator.
Cause: The percentage number is not in the range [0.000001,100)
Cause: SAMPLE applying to a remote object is not supported
Cause: User attempted to use a partition-extended object name with an object which is not a table.
Cause: User attempted to use the keywords CUBE or ROLLUP outside a GROUP BY clause
Cause: User attempted to use the GROUPING function without GROUP BY CUBE or GROUP BY ROLLUP
Cause: One of the functions, such as AVG, COUNT, MAX, MIN, SUM, STDDEV or VARIANCE, was used in a WHERE or GROUP BY clause
Cause: A set operator was used in a subquery that was the argument to a MULTISET operator.
Cause: A query that contains a cursor subquery is being used from client side.
Cause: You were trying to create a SQLJ Object Type under a non-SQLJ Object Type.
Cause: You were trying to create a SQLJ Object Type with a different value of the USING clause from the USING clause specified in its supertype.
Cause: You were trying to a SQLJ Object Type method that override an inherited method.
Cause: You were trying to use ROW more than once in UPDATE statement.
Cause: with ROW on LHS, only PL/SQL records or %ROWTYPE variables are allowed on right hand side..
Cause: Number of columns do not match with number of attributes on record type on rhs.
Cause: You are trying to use more than one values in VALUES clause or RETURNING INTO clause, when one of the value is of record type..
Cause: An attempt was made to create a FINAL NOT INSTANTIABLE type. No useful operation can be performed with this type.
Cause: In a simple CASE statement or expression, the CASE operand and WHEN operands do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Cause: In a CASE expression, the result expressions do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Cause: All the results in the CASE expression are the literal NULL.
Cause: In a NULLIF expression, the two operands do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Cause: The first operand in the NULLIF expression is the literal NULL.
Cause: In a COALESCE expression, the operands do not match in datatype, and it is unclear which implicit conversion is required to correct the mismatch.
Cause: All the operands in the COALESCE expression are the literal NULL.
Cause: The range constraints specified for a pls_integer or binary_integer declaration did not fall between -2147483647 and 2147483647.
Cause: The precision specified for a FLOAT, REAL or DOUBLE PRECISION did not fall between 1 and 126.
Cause: USING clause cannot be used with functions that are not declared with AGGREGATE or PIPELINED properties.
Cause: A PARTITION/CLUSTER/ORDER-BY clause was used with an OUT or IN OUT ref-cursor parameter.
Cause: A partitioning or clustering/ordering specification specified on an argument that is not one of the function arguments.
Cause: A partitioning or clustering/ordering specification specified on an argument that is not a strongly typed ref cursor.
Cause: A partitioning or clustering/ordering specification must use only valid record attributes.
Cause: A PIPE statement was used in a non-pipelined function.
Cause: A pipelined function was specified with an unsupported return type. The following are not supported as return types of pipelined functions: - non-collections, - PL/SQL tables, - associative arrays, - collections of PL/SQL types: rowid, mlslabel, long, long raw, boolean, binary_integer, pls_integer, string and urowid The following restrictions apply: - If the return type is a collection of records, then each of the attributes of the record must be a supported type. - A collection of records must not contain a record type as one of its attributes.
Cause: PARTITION-BY and CLUSTER/ORDER-BY clauses are specified on different function arguments.
Cause: An attempt was made to provide an implementation for a NOT INSTANTIABLE method.
Cause: A RETURN statement in a pipelined function contains an expression, which is not allowed. Pipelined functions must send back values to the caller by using the PIPE statement.
Cause: The type being created contains NOT INSTANTIABLE methods, either declared or inherited. The type must be explicitly declared NOT INSTANTIABLE
Cause: The method specification contains the OVERRIDING keyword but the method does not override a method in the ancestor types.
Cause: An attempt was made to provide an overriding method specification, but the OVERRIDING keyword was not specified.
Cause: An attempt was made to override a FINAL MEMBER method or hide a FINAL STATIC method.
Cause: The MAP method does override the inherited one.
Cause: NCHAR/NVARCHAR can only be codepoint length sematics. BYTE qualifiers used with NCHAR is illegal: nc NCHAR(7 BYTE); name NVARCHAR2(10 byte);
Cause: A pipelined function was invoked from a PL/SQL expression.
Cause: A SELECT statement in a cursor definition, an OPEN statement or a cursor FOR loop has an erroneous INTO clause.
Cause: A locally-defined (i.e. not schema level) collection type was used in a SQL statement. The type must be defined in a schema to be accepted in a SQL statement.
Cause: Items of type boolean, table of foo index by binary_integer, record and static cursors cannot be used in SQL statements.
Cause: In a CASE expression, the result expressions do not match in character set, and it is unclear which implicit conversion is required to correct the mismatch.
Cause: In a COALESCE expression, the operands do not match in character set and it is unclear which implicit conversion is required to correct the mismatch.
Cause: An attempt was made to define a MAP or ORDER method in a subtype.
Cause: While creating a subtype some attribute name conflicted with a method name.
Cause: User tried to complete a type, Tsub as a subtype of another type, Tsuper where Tsuper contained an attribute of type Tsub or of type REF to Tsub. This is an implementation restriction.
Cause: User tried to override the method more than once in the same subtype.
Cause: Uer tried to use invalid type for PARTITION/CLUSTER?ORDER BY clause.
Cause: User tried to use some other database object like a package to define implementation type of an aggregate/table function.
Cause: User tried to create aggregate function with either 0 or more than one arguments.
Cause: User tried to use a table/aggregate function in PL/SQL scope.
Cause: User tried partion by order by cluster by without parallel enable clause in table function.
Cause: user is trying to declare a procedure to be pipeliend function
Cause: An EXTRACT operation specified a field that was not present. For example, you tried to extract the YEAR field from a TIME variable.
Cause: Variable or expression of associative array type was used as bulk SQL bind or define.
Cause: The name of the object type constructor does not match the type name.
Cause: The return clause of the constructor method did not specify SELF AS RESULT.
Cause: The mode of the SELF parameter of the constructor was not IN OUT.
Cause: An attempt was made to include an expression in the RETURN statement of a CONSTRUCTOR body.
Cause: An attempt was made to create a non-external object, whoose attributes are mapped externally.
Cause: The NEW keyword is not followed by an call to a constructor method.
Cause: An attempt was made to specify both ORDER BY and CLUSTER BY for the same table function.
Cause: An attempt was made to specify an ORDER BY or CLUSTER BY clause without also specifying a PARTITION BY clause.
Cause: An attempt was made to specify index collection that was not indexed by binary_integer or pls_integer.
Cause: An attempt was made to specify index collection whos element type was not one of pls_integer or binary_integer.
Cause: An attempt was made to specify expression after INDICES OF or VALUES OF clause whose type is not a collection type.
Cause: An attempt was made to specify expression after INDICES OF or VALUES OF clause that is not a collection variable.
Cause: An attempt was made to specify an expression as a sort column in a PARTITION BY, CLUSTER BY or ORDER BY clause. Only simple column names are permitted.
Cause: The generalized invocation syntax was used in instance method context.
Cause: The expression in the generalized expression should be a sub type of the type.
Cause: The generalized expression is used in wrong context
Cause: The form table(bulk_index).field is the only field selection supported at runtime.
Cause: Before and After row sections are not allowed for Compound trigges defined on the Table and instead of row section is not allowed for Compound Triggers defined on a view.
Cause: Each Compound Trigger Section can appear at most once in a body of the compound trigger
Cause: The Compound Triggers hsd pragma autonomous transaction.
Cause: A return Statement was seen inside a compound trigger
Cause: :new or :old were used in this section.
Cause: BEFORE/AFTER ROW sections are not allowed with instead of row triggers.
Cause: An EXCEPTION_INIT pragma was not declared in the same block as its exception. They must be declared in the proper order in the same block, with the pragma declaration following the exception declaration.
Cause: The error number passed to an EXCEPTION_INIT pragma was out of range. The error number must be in the range -9999 .. -1 (excluding -100) for Oracle errors or in the range -20000 .. -20999 for user-defined errors.
Cause: The second argument passed to an EXCEPTION_INIT pragma was something other than a numeric literal (a variable, for example). The second argument must be a numeric literal in the range -9999 .. -1 (excluding -100) for Oracle errors or in the range -20000 .. -20999 for user-defined errors.
Cause: Two or more actual parameters in a subprogram call refer to the same formal parameter.
Cause: The exception_name parameter passed to an EXCEPTION_INIT pragma is misspelled or does not refer to a legally declared exception. Or, the pragma is misplaced; it must appear in the same declarative section, somewhere after the exception declaration.
Cause: An exception was referred to in an expression. Exceptions have names but not values and therefore cannot contribute values to an expression. For example, the following RETURN statement is illegal: FUNCTION credit_limit (cust_no INTEGER) RETURN NUMBER IS limit NUMBER; over_limit EXCEPTION; ... BEGIN ... RETURN over_limit; -- illegal END;
Cause: An exception name was mistakenly used to qualify a reference to a component. For example, when dot notation was used to specify fields within a record, an exception name might have been coded instead of the record name.
Cause: At run time, this is an internal error. At compile time, it indicates one of the following problems: -- A call was made to a remote subprogram that has a parameter type or default expression not supported at the calling site. -- An incomplete upgrade or downgrade was done to a database that has stored procedures. Perhaps incorrect versions of system packages such as STANDARD.SQL were installed. -- A compiler bug was encountered. In such cases, legal PL/SQL syntax will fail to compile.
Cause: The named pragma was not declared in a package specification, as required. For example, the pragma RESTRICT_REFERENCES must be declared in a package specification.
Cause: The named pragma was declared in a package specification but not in the corresponding package body or vice-versa, as well as the package body.
Cause: The pragma was specified in an inappropriate context.
Cause: The PRAGMA was declared twice in the same block.
Cause: Only top level subprograms or subprogram declarations in PACKAGE or TYPE specifications are allowed to have the options DETERMINISTIC or PARALLEL_ENABLE. For example, this error would be raised if the options are used in PACKAGE or TYPE body.
Cause: An attempt was made to instantiate a type that is defined as NOT INSTANTIABLE.
Cause: The supertype's AUTHID is DEFINER, but the supertype and subtype are defined in different schemas. SQL statements executed in dynamically dispatched methods can potentially pick up different values from database tables in the two schemas.
Cause: An attempt was made to drop a nonexistant method or attribute from the type being altered.
Cause: User attempted more than one of ADD, DROP or MODIFY on an attribute in single ALTER TYPE statement. User attempted more than one of ADD or DROP on a method in single ALTER TYPE statement.
Cause: The method to be dropped matches the name of some existing method but does not match it in signature.
Cause: The type of the attribute to modify is not one of VARCHAR2, NUMBER, or RAW.
Cause: Modification to the attribute did not widen its constraints or attempted to change the type of the attribute. For NUMBER type attributes, scale and precision can be changed to allow increase in number of digits after and before the decimal point. For VARCHAR2 and RAW type attributes the size can be increased. Other type attributes are not allowed to be modified. Change of type of attribute is also not allowed.
Cause: The type has evolved. The version of the type used by the compiled code is not the same as the latest version of the type.
Cause: This compilation was aborted because the library unit that was compiled would have formed a non-REF mutually-dependent cycle with some other library units. This happens when an attempt is made to compile types that have attributes of other types that may participate in a cycle with this type. Example: create type t1; create type t2 (a t1); create type t1 (a t2);
Cause: The subtype's's AUTHID must be same as the supertype's AUTHID.
Cause: In TREAT(expr AS type), type must be a supertype or subtype of expr.
Cause: An attempt was made to modify the limit of a type that was not a schema-level varray and nested table type.
Cause: An attempt was made to modify the limit of a type that was not a schema-level varray type.
Cause: An attempt was made to decrease the limit or raise it past 2147483647.
Cause: Modification to the collection element type did not widen its constraints or attempted to change the type of the element. For NUMBER types, scale and precision can be changed to allow increase in number of digits after and before the decimal point. For VARCHAR2 and RAW type attributes the size can be increased.
Cause: The element type to modify is not one of VARCHAR2, NUMBER, or RAW.
Cause: An attempt was made to alter a type that was not schema-level.
Cause: An ellipsis and a non-ellipsis type appeared at the same position in separate overload candidates. Currently, if ellipsis types are used they must appear in ALL overload candidates with the same name (regardless of the number or types of their formal parameters) at the same position in the formal parameter list.
Cause: Attempted to call a vararg function (a function which contains ellipsis in the formal parameter list) as an RPC.
Cause: Attempted to use an associational actual argument for a formal ellipsis type argument.
Cause: More than one ellipsis ('...') was found in a formal parameter specification for a function or procedure
Cause: An attempt was made by the user to declare an operator (a function whose name is enclosed in single quotes ("'")). Operators may only be declared in package STANDARD.
Cause: A string of more than expected number of chararacters was found for the LIBRARY or ASSEMBLY file specification.
Cause: The current unit contains a REF to a target object. During compilation, the REF's target object was simultaneously changed by a different session. The current unit is therefore invalid and needs to be recompiled to pick up the latest definition of the REF target.
Cause: The current statement refers to remote insert/update/delete for remote object.
Cause: A string of more than expected number of chararacters was found for the ASSEMBLY identity specification.
Cause: A property was specified on a subprogram's declaration but not on its definition or vice-versa.
Cause: When the fields of a record were declared, one field was used to initialize another, as in: TYPE my_rec IS RECORD (f1 varchar2(10), f2 varchar2(10) := f1); The first field has no value until run time, so it cannot be used to initialize another field.
Cause: The string provided for the identity clause of an ASSEMBLY was null.
Cause: The string provided for the METHODNAME clause of a DOTNET call specification was null.
Cause: The string provided for the CONTEXT clause of an ASSEMBLY was null.
Cause: The string provided for the AGENT clause of an ASSEMBLY was null.
Cause: .NET assemblies were not supported on this platform. .NET assemblies are only supported on 32-bit and 64-bit Windows.
Cause: Compilation of the library unit was terminated because of other reported errors.
Cause: A top level subprogram (function or procedure) cannot be created if the system package SYS_STUB_FOR_PURITY_ANALYSIS is missing in the Oracle database.
Cause: Some of the internally generated types prefixed with SYS_ have been dropped. These should never be dropped by the user.
Cause: The format of the wrapped unit being compiled is not understood by the compiler. This may be because the unit was edited or modified after it was wrapped.
Cause: An attempt was made to violate the rule "A noneditioned object may not depend on an editioned object."
Cause: The SYSAUX tablespace was offline while attempting to save identifier data. Any identifier data previously collected and saved for the libunit will be invalid.
Cause: Some host environments of the PL/SQL compiler do not support the full range of PL/SQL features. A construct in the program violated one of the current host's restrictions.
Cause: More than one column was specified for the PARTITION BY VALUE clause.
Cause: The partitioning column of the PARTITION BY VALUE clause was not a NUMBER column.
Cause: The type of the object named in the USING clause of a polymorphic table function was not a package
Cause: An attempt was made to use PARTITION BY, ORDER BY, CLUSTER BY OR PARALLEL ENABLE clause in polymorphic table function.
Cause: The specified collation for the unit was not USING_NLS_COMP.
Cause: The columns referenced with %TYPE or %ROWTYPE did not have the USING_NLS_COMP collation.
Cause: Bind variables did not have the USING_NLS_COMP collation.
Cause: An attempt was made to use COLUMNS as a return type for polymorphic table function.
Cause: An attempt was made to use COLUMNS or TABLE as a type specification.
Cause: An attempt was made to use more than one argument with TABLE as the type specification.
Cause: An attempt was made to specify a type other than TABLE type as the return type specification.
Cause: A default value was specified for a formal paramaeter of type TABLE in a polymorphic table function specification.
Cause: A non-NULL default value was specified for a formal parameter of type COLUMNS in a polymorphic table function.
Cause: A library unit was read with an unsupported version.
Cause: This is a generic internal error that might occur during compilation or execution. The first parameter is the internal error number.
Cause: At run time, the body of a program unit could not be found. This can happen for one of two reasons. -- First, there may be a unit 'a' which calls a module 'b', where the spec for 'b' exists but not the body. In this case, since the spec is present, there will be no compile-time errors. -- Secondly, this can occur if there is a reference to a sequence outside of the proper context such as a SQL statement. In this case, the "spec" of the sequence reference can be found, but it is invalid to actually run code which references the sequence outside a SQL statement, as in: i := seq.nextval;
Cause: A column in a database table belongs to a datatype that is not supported by the current release of PL/SQL.
Cause: A host variable that is protected from update was used in a context that allows an update.
Cause: An attempt was made to operate on a database object without the required privilege. This error occurs, for example, if an attempt was made to UPDATE a table for which only SELECT privileges were granted.
Cause: An invalid package specification or stored subprogram was referenced. A package specification or stored subprogram is invalid if its source code or any database object it references has been DROPped, REPLACEd, or ALTERed since it was last compiled.
Cause: The PL/SQL compiler cannot run properly because its operating environment is corrupted. For example, its error message file might be inaccessible.
Cause: PL/SQL is unable to find and load a library unit that was previously available. This typically happens when you try to load a unit which references another library unit that is non-existent or invalid.
Cause: PL/SQL cannot understand the stored format of a library unit. It has been compiled or shrink-wrapped with a version of PL/SQL either too new or too old for this version to understand it.
Cause: An object from the operator declaration is not declared, or it is declared but there is no sufficient privileges to access that object.
Cause: An attempt was made to inherit from a type without the required UNDER privilege.
Cause: A PL/SQL program is being compiled natively, but the compiler parameter plsql_native_library_dir, which denotes the directory to store the native shared objects (DLL), is not set.
Cause: The native compilation of PL/SQL program has failed because the native shared object (DLL) could not be created successfully.
Cause: Native compilation of PL/SQL programs is not supported on this platform.
Cause: Native compilation of a PL/SQL program failed because a file could not be created. It is likely that the system parameter plsql_native_library_dir does not reference a writable, existing directory
Cause: In a SQL statement, a PL/SQL table was referenced incorrectly. For example, the following reference might have been made, but PL/SQL table attributes can only be used in procedural statements: SELECT ename_tab.COUNT INTO name_count WHERE ...
Cause: PL/SQL cannot understand something in an imported library unit. It uses some feature either too new or too old for this version to understand it.
Cause: Schema-level object types, or types which recursively use such types, were used in an RPC, which is not permitted. For example: create type foo as object (...) create package my_pack is type my_rec is record(v foo); -- on a remote server: x my_pack.my_rec@rpc; -- illegal attempt to use type my_rec
Cause: The class name defined as part of the method signature does not match the one defined in the type header in the EXTERNAL NAME clause. create type foo as object EXTERNAL NAME 'foo' LANGUAGE JAVA (... MEMBER FUNCTION my (number) return number EXTERNAL NAME 'bar.func(oracle.sql.NUMBER) return oracle.sql.NUMBER', .. );
Cause: 3.0 Implementation Restriction for Ref Cursors
Cause: 2.2 Implementation Restriction for Ref Cursors
Cause: 2.2 Implementation Restriction for Ref Cursors
Cause: An attempt was made to pass a cursor variable to or from a remote subprogram by way of a forwarded RPC, which is not allowed. For example, from a client-side tool, a procedure on a remote database cannot be used to open a cursor variable because remote subprograms cannot return the values of cursor variables.
Cause: An attempt was made to declare a cursor variable in a package specification, which is not allowed. Although REF CURSOR types can be defined in a PL/SQL block, subprogram, or package, cursor variables can be declared only in a block or subprogram.
Cause: An exception was raised for which no handler was found. If it cannot find a handler for a raised exception, PL/SQL returns an unhandled exception to the host environment. The number embedded in the message is an Oracle error code listed in this manual.
Cause: A request from PL/SQL for more memory failed.
Cause: Cursor return types have bugs, and it is best to disable them for now.
Cause: Use of '||' token in expressions is not in ANSI's grammar. This corresponds to the "binary_add_op"'s reduction to a "CAT_" in plsql.y
Cause: Identifiers over 18 characters long are not allowed under the ANSI grammar.
Cause: The use of quoted identifiers is a PL/SQL extension and is not allowed under the ANSI grammar.
Cause: C-style comments (introduced with the '/' and '*' characters) are not part of the ANSI grammar. To conform with ANSI, comments must be preceded by the ANSI comment introducer, '--' , and must not contain a newline. If someone can figure out a way to make this message look less cheesy without ending up with nested comments, be my guest.
Cause: ANSI identifiers can only consist of letters, digits, and the underscore character. PL/SQL allows "#" and "$" in identifiers, but these are not ANSI.
Cause: Under ANSI's grammar, numeric data represented in exponent notation must use an uppercase "E". Example: 3.45E-6 is ANSI, but 3.45e-6 is not.
Cause: An identifier has been found that is considered a keyword in ANSI's grammar but not in PL/SQL's.
Cause: One of the identifiers "CHAR", "CHARACTER", or "INTEGER" (all ansi keywords) has been redefined by the programmer.(special case of 1406, above).
Cause: Use of '&' token in expressions is not in ANSI's grammar.
Cause: Use of 'PRIOR_' token in expressions is not in ANSI's grammar.
Cause: Use of 'MOD' token in expressions is not in ANSI's grammar.
Cause: Use of 'REM' token in expressions is not in ANSI's grammar.
Cause: Use of 'EXP' token in expressions is not in ANSI's grammar.
Cause: Use of NULL an expression not in ANSI's grammar.
Cause: Use of qualified expression here is not in ANSI's grammar.
Cause: Use of aggregate value here is not in ANSI's grammar.
Cause: Use of id (value...) here is not in ANSI's grammar.
Cause: Use of %%attribute value here is not in ANSI's grammar.
Cause: Subquery cannot include set operators in ANSI's grammar.
Cause: Subquery must have either '*' or exactly one column in its select list according to ANSI's grammar.
Cause: INTERSECT and MINUS set operators are not ANSI
Cause: FOR UPDATE clause is not in ANSI's grammar.
Cause: Aliases are not in ANSI's grammar.
Cause: Subquery on right-hand-side in set clause is not in ANSI's grammar.
Cause: ANSI specifies an ordering to clauses in a table-expression which PL/SQL doesn't. The ordering according to ANSI must be: (1) from clause (2) where clause (3) group-by clause (4) having clause In PL/SQL, the from clause must come first, and the clauses after it can appear in any order (with the addition of the non-ansi connect-by clause).
Cause: ANSI doesn't allow connect-by clauses.
Cause: This value expression contains a nonconforming data type. Section 4.2 of X3H2, "Data types" states that: "A nonnull value is either a character string or a number." Many builtin functions in STANDARD will be flagged with this warning by means of a pragma.
Cause: The data types of these value expressions must be comparable. Section 4.2 of X3H2, "Data types", states that: "A character string and a number are not comparable values." Many builtin functions in STANDARD will be flagged with this warning by means of a pragma. This warning will be place on data-type coercion functions, for example, TO_CHAR(number), that are inserted in OracleSQL to allow non-conforming data type combinations.
Cause: This function is not part of the ANSI standard. This warning is used to flag such functions as "POWER" that are not mentioned in the ANSI specifications.
Cause: This procedure is not part of the ANSI standard. This warning is used to flag such procedures as "STOP" that are not mentioned in the ANSI specifications.
Cause: No operator may be used with values of data type "character string". Section 5.9, "value expression", syntax rule 3, of X3H2 states: "If the data type of a primary is character string, then the value expression shall not include any operators." This warning is placed on many functions in STDBASE that take CHAR args.
Cause: The predicates "IS NULL" and "IS NOT NULL" are defined only for column specifications, not for any other expressions. Section 5.15, "null predicate", indicates that in the predicate "x IS NULL", x must be a column, and may not be any other kind of expression.
Cause: The set clause in an UPDATE statement requires a column name of length 1. Sect. 8.11, 8.12
Cause: Cannot access object on a remote host.
Cause: STDDEV is not a standard set function.
Cause: VARIANCE is not a standard set function.
Cause: Null strings are not allowed.
Cause: The value list of the IN predicate, if not a subquery, must contain only value_specifications (i.e. literals and PL/SQL or embedded variables).
Cause: The first argument of the like-predicate must be a column of type character string.
Cause: ANSI standard does not permit records.
Cause: The escape character in the like-predicate must be a literal or a variable of type character.
Cause: The keyword DISTINCT must be present in a COUNT(DISTINCT sim_expr). Sect 5.8
Cause: In a set_function_specification, if DISTINCT is present, the expression must be a column_specification.
Cause: Use instead of != or ~=. Sect 5.11.
Cause: Due to the combining of comparison_predicate and quantified_predicate, we may have something like sim_expr = ANY_ sim_expr, which is nonetheless accepted by kernel.
Cause: Unions are not allowed in the definition of a view. Sect. 6.9
Cause: CREATE TABLE allows only the definition of the structure of a table. None of the .SPACE__name. .PCTFREE__numeric_literal. .cluster. is ANSI. Sect. 6.2
Cause: Constraint name and constraint status are non-ANSI. Sect. 6.3
Cause: The expression in a SET clause must not include a set function. Sect. 8.12.
Cause: CREATE TABLE allows only the definition of the structure of a table. Use of AS phase in CREATE TABLE statement is non-ANSI.
Cause: ALTER is non-ANSI
Cause: CREATE INDEX is non-ANSI
Cause: DROP is non-ANSI
Cause: Illegal syntax in ROLLBACK WORK statement.
Cause: Illegal syntax in COMMIT WORK statement.
Cause: Cursor name in CLOSE statment must be of length 1.
Cause: The expressions in a sort clause may only be column specifications or unsigned integers, followed by optional ASC or DESC.
Cause: Missing keyword FROM.
Cause: In a positioned DELETE or UPDATE statement, the table deleted fromor updated must be identified in the specifictation of the cursor.
Cause: In a searched DELETE, UPDATE or INSERT statement, the table affected must not appear in a FROM clause in any of the subqueries in the search condition.
Cause: In an INSERT statement, the insert value list, if specified with a value list rather than a subquery, must be value specifications, i.e. no compound expressions or column references. Sect 8.7.
Cause: In a positioned DELETE or UPDATE statement, the cursor name must be of length 1.
Cause: A SELECT statement may not contain ORDER_BY, HAVING, or GROUP_BY clause. Sect. 8.10.
Cause: ANSI does not allow bind variables as INDICATORS
Cause: The constraints on these types do not match
Cause: ANSI expects a column name not a literal value here
Cause: There was a failure while converting a character string into a numeric value.
Cause: PL/SQL was unable to transfer data into a host array because the array is too small.
Cause: There was a failure while converting a hexadecimal string to a raw.
Cause: SQLERRM() was called with a non-integer value.
Cause: An attempt was made to index into an index table with a NULL key value.
Cause: An error was encountered while moving a character string from a source to a destination. This error occurs if, for example, an attempt is made to move a a character string of 10 characters into a 1 character buffer. The cause of this error may not always be obvious. For example, the following will result in this error: a varchar2(1); b number; b := 10; a := b; An error results because an implicit conversion causes the number 10 to become the character string '10', which does not fit in the character buffer of 1 allocated for the variable a.
Cause: The length of a raw variable being copied or assigned was too long to fit into its destination.
Cause: The number begin copied or assigned had too many digits to the left of the decimal and did not fit into its destination. In other words, there is a number precision mismatch. This error may also occur if, for example, an attempt is made to assign a character string to a number, as demonstrated below. a varchar2(4); b number(1,1); a := '10.1'; b := a;
Cause: PL/SQL determined that a server side DML with a RETURNING INTO clause does not use a buffer that is large enough to hold the data being returned.
Cause: An attempt was made to assign or copy a supertype instance to a container (destination) that can only hold a subtype instance.
Cause: NLS parameters affecting comparison of keys have been altered dynamically. The associative array's index is invalid.
Cause: The key value of an element being inserted into an associative array violates the the key type constraints.
Cause: The run-time type of the instance is not the declared type. e.g. If the return value of a user defined constructor is wrong.
Cause: The run-time type of the instance is the not declared type or one of its subtypes. e.g. TREAT(supertype AS subtype) fails.
Cause: The subprogram was found to have two SECURITY specifications.
Cause: The subprogram was found to have two ASSEMBLY specifications.
Cause: The security level specified in the callspec exceeds the maximum security level allowed by the assembly.
Cause: The item is intended for internal use and must not be referred to in user code.
Cause: An attempt was made to compile a unit that was wrapped using 9.2 or earlier version of the wrap utility. Wrapped source created by 9.2 and earlier versions of wrap is not permitted on this database.