Action: Replace the first argument with the name of a legally declared exception. Action: Set the cursor parameter to IN OUT or OUT. Then repeat the process. – The ROWCOUNT attribute does not indicate the actual number of rows until you have traversed the entire cursor. In other words, you should not rely on this attribute to indicate how many rows are in a cursor after it is opened. Cause: A binding variable, i.e. a colon-prefixed identifier, was found in an inappropriate context. 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 block, subroutine, or PL/SQL package, cursor variables can only be declared in a block or subroutine. PLS-00701: Illegal ORACLE Error Number String for PRAGMA EXCEPTION_INIT You are trying to create a table with %type attributes, which is not allowed. Action: Report the internal error to your customer service representative or do one of the following, depending on the issue: – Review the application logic to use default parameter types and expressions supported at local and remote sites. – Perform the upgrade or downgrade correctly and make sure that the correct versions of all system packages are installed.
– Report the legal syntax error to your customer service representative. If you see row and column numbers with the error message, they can help you find a workaround. For example, try recoding the faulty line to avoid the error. Action: Change the cursor return type or select list so that the number of column values returned matches the number of items in the select list. Action: Edit the declaration or do not apply the %ROWTYPE attribute to the identifier. Cause: An attempt was made to create an index table using cursor variables. Cause: An attempt was made to reference a remote cursor attribute, which is not allowed. For example, the code might look like this: A literal, constant, IN, loop counter, or function call parameter was incorrectly used as the target of an assignment. For example, the following statement is invalid because assignment target 30 is a literal: When you declare a constant or variable, use the %TYPE attribute to automatically provide the data type of a column. When declaring a record, use the %ROWTYPE attribute to automatically provide the data types for a row.
Cause: The prefix in a qualified name was a subroutine or cursor that was not in a perimeter area. That is, a subroutine or cursor name is used as a scope qualifier for a reference to an entity (within that subroutine or cursor) that is outside the scope. Example: declare the number x; Type T1 is the registration (a number); The function f returns t1 is a number; start x := f.a; — the lawful use of the “f” function as a scope qualifier; — solves the local variable “a” in function “f”. x := f().a; — legal reference to component “A” of the end of registration returned; start x := f.a; — unlawful use of the function “f” as a scope qualifier x:= f().a; — legal reference to component “A” of the end of registration returned; Action: Check the spelling and declaration of the cursor name and identifiers referenced in the cursor declaration. Also, make sure that the declaration is correctly placed in the block tree. If a return type is specified, make sure that it references an existing database table or a previously declared cursor or cursor variable. Cause: The evaluation value in the LIMIT clause of a bulk checkout was found in an inappropriate context. For example, the following statement is invalid because the LIMIT clause expects a numeric value in a bulk checkout.
C1 BULK COLLECTION WITHIN var_tab LIMIT `22333`; – Illegal action: Make sure the data type identifier defines a valid type. Remember to use the %TYPE and %ROWTYPE attributes if necessary. Cause: The %LAST attribute must be applied to an enumeration type (or a subtype of an enumeration type). This error occurs when “%LAST” follows a name that is not declared in this way. Action: Check the spelling of all identifiers in the declaration. If necessary, move the declaration so that it no longer contains references. Action: Remove the invalid formal parameter reference. Cause: Once one subtype was defined as NOT NULL, it was used as the base type for another subtype defined as NULL.
This is not allowed. For example, the code might look like this: DECLARE SUBTYPE Weekday IS INTEGER NOT NULL; SUBTYPE Weekend IS WEEK DAY ZERO; — illegal instead of DECLARE SUBTYPE Weekday IS INTEGER NOT ZERO; The SUBTYPE weekend is a weekday; Cause: Modifying the attribute did not extend the constraints or attempt to change the attribute type. For attributes of type NUMBER, the scale and precision can be changed to allow an increase in the number of digits after and before the decimal point. The size can be increased for VARCHAR2 and RAW attributes. Do not modify other type attributes. Changing the attribute type is also not allowed. Cause: A cursor was declared with a SELECT statement containing duplicate column names. These references are ambiguous.
Action: Check the spelling of the identifier in the WHEN clause, and replace the function call with an exception name. Cause: A FETCH statement could not assign a value to an assignment target in its IN list because the target is not a legally formed and declared variable. For example, the following assignment is not allowed because `Jones` is a string and not a variable: Cause: This exception is thrown for the following errors: – The expression in the INTO clause of the OPEN or RETURNING statement does not belong to either the legal SQL data type or the data type PL/SQL RECORD – A collection of records is used in the INTO clause of the OPEN or GIVING statement.