Oracle8 Error Messages Release 8.0.4 A58312-01 |
|
Cause: This is a generic error message from the command-line processor.
Action: Correct the indicated error.
Cause: The command line processor encountered a severe error.
Action: After making sure that all the command-line options are specified correctly, call customer support with a full account of all the options and configuration files used.
Cause: When MODE={ANSI14 | ANSI13}, DBMS=V7 or V8 was specified, or when MODE=ANSI, DBMS=v6 was specified. These option settings are incompatible. Note that the DBMS option was not available before release 1.5 of the Oracle Precompilers.
Action: With DBMS=V7 or V8, instead of MODE={ANSI14 | ANSI13}, specify MODE={ANSI | ORACLE}. With DBMS=V6, instead of MODE=ANSI, specify MODE={ANSI14 | ANSI13 | ORACLE}, but MODE=ORACLE is recommended.
Cause: The option UNSAFE_NULL=YES has been used with DBMS=V6 or DBMS=NATIVE (the default) or has been used with MODE=ANSI/ANSI14/ANSI13.
Action: Use DBMS=V7 or V8 and MODE=ORACLE (the default) when using UNSAFE_NULL=YES or do not use UNSAFE_NULL=YES.
Cause: The precompiler option NLS_LOCAL=YES was used without also specifying MODE=ANSI. The precompiler option MODE=ANSI must be specified if NLS_LOCAL=YES.
Action: Set the precompiler option MODE=ANSI in addition to NLS_LOCAL=YES or do not set NLS_LOCAL=YES.
Cause: The USERID option was specified when SQLCHECK={SYNTAX | NONE}. This is unnecessary.
Action: Specify the USERID option only when SQLCHECK=SEMANTICS.
Cause: This is a generic error message from the command-line processor.
Action: Correct the indicated error.
Cause: The precompiler tried to parse an embedded PL/SQL block when SQLCHECK={SYNTAX | NONE}. PL/SQL blocks can be parsed only when SQLCHECK=SEMANTICS is specified.
Action: Remove the PL/SQL block or specify SQLCHECK=SEMANTICS.
Cause: The MAXLITERAL option has been used in an inline EXEC ORACLE OPTION statement after an EXEC SQL, EXEC TOOLS, or EXEC IAF statement. This is not allowed.
Cause: The SQLCHECK option was entered inline and specified a level of checking higher than the level specified (or accepted by default) on the command line. This is not allowed. For example, if SQLCHECK={SYNTAX | LIMITED} is specified on the command line, SQLCHECK={SEMANTICS | FULL} cannot be specified inline. This informational message is; the precompiler ignores the inline value and continues processing.
Action: Revise the EXEC ORACLE statement or specify a lower level of checking on the command line.
Cause: V6 compatibility is no longer supported. The precompiler will precompile as though DBMS=NATIVE was specified.
Action: Revise the specified DBMS option value from V6 to another value as desired.
Cause: The precompiler was unable to reopen a temporary file Some possible causes follow:
Action: Check that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager).
Cause: The precompiler was unable to open the system configuration file. The system configuration file does not exist or is not in the proper directory.
Action: Check that the system configuration file is in the proper directory. See your Oracle installation documentation for where this should be. Put a new copy of PCBcob.cfg with desired default options in the proper directory.
Cause: The file name length specified exceeded the maximum length. Some operating systems have a maximum file name length.
Action: Use a file name of length less than or equal to the maximum platform specific file name length.
Cause: The precompiler was unable to open the listing file specified by the LNAME precompiler option. Some possible causes follow:
Action: Check that the file exists, that the search path to the file is correct, that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager). If a listing file is not needed, specify LTYPE=NONE on the command line.
Cause: The precompiler was unable to open the input file specified by the INAME precompiler option. Some possible causes follow:
Action: Check that the file exists, that the search path to the file is correct, that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager).
Cause: The filename specified exceeded the maximum length. Some operating systems have a maximum file name length.
Action: Use a filename of length less than or equal to the maximum platform specific file name length.
Cause: The precompiler was unable to open a temporary file for internal use. There might be insufficient disk space, too many open files, or read-only protection on the output directory.
Action: Check that there is enough disk space, that the limit for open files is set high enough (check with the system manager) and that protection on the directory allows opening a file for writing.
Cause: The precompiler was unable to open the input file specified by the INAME precompiler option. Some possible causes follow:
Action: Check that the file exists, that the search path to the file is correct, that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager).
Cause: The precompiler was unable to open the listing file specified by the LNAME precompiler option. Some possible causes follow:
Action: Check that the file exists, that the search path to the file is correct, that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager). If a listing file is not needed, specify LTYPE=NONE on the command line.
Cause: The precompiler was unable to open the output file specified by the NAME precompiler option. Some possible causes follow:
Action: Check that the file exists, that the search path to the file is correct, that sufficient privileges have been granted to access the file, and that it is not locked by another user. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager).
Cause: The precompiler was unable to open a file for temporary use.Some possible causes follow:
Action: Check that the file exists, that sufficient privileges have been granted to access the file, and that it is not locked. Also check that there is enough disk space and that the limit for open files is set high enough (check with the system manager).
Cause: A PIC N variable or an implicit VARCHAR group item (with a PIC N variable as an elementary item) was used in an EXEC SQL VAR statement. This is not allowed.
Action: Do not use the PIC N variable in an EXEC SQL VAR statement. If you want an equivalence to an Oracle type using an EXEC SQL VAR statement, use a PIC X variable, instead of a PIC N variable.
Cause: The host variable is a group item containing tables. Indicator variables used with this type of host variable must be group items of tables of indicators corresponding the tables in the group item host variable.
Action: Change the indicator variable to be a group item of indicator tables.
Cause: The host variable is a group item. Indicator variables used with this type of host variable must be a group item or table of indicator variables.
Action: Use a group item or table of indicator variables.
Cause: The variable used as a host variable was a group item which itself contained other group items.
Action: Remove any group items from the group item to be used as a host variable.
Cause: A group item host variable was used outside of an INTO or VALUES clause. A group item host variable may be used only in an INTO or VALUES clause.
Action: Do not use a group item outside of an INTO or VALUES clause.
Cause: A PIC N or PIC G variable was used in an embedded PL/SQL block when the precompiler option NLS_LOCAL=YES was used. A PIC N or PIC G variable is not supported in this situation.
Action: Do not use the PIC N or PIC G variable within the PL/SQL block or use precompiler option NLS_LOCAL=NO.
Cause: A \"N\" literal (a literal of the form N'...') was used within a PL/SQL block when the precompiler option NLS_LOCAL=YES was used. N literals are not supported in this situation.
Action: Use an ordinary literal (one without the \"N\") within the PL/SQL block or use precompiler option NLS_LOCAL=NO.
Cause: A PIC N variable was declared using an OCCURS clause. Tables of PIC N variables are not supported when NLS_LOCAL=YES.
Action: Declare the PIC N variable without an OCCURS clause or, do not use the PIC N variable in any SQL statements.
Cause: The host language syntax used to define a host variable in the Declare Section is incorrect.
Action: Check the syntax and the spelling, then correct the declaration.
Cause: A variable whose format does not support scaling was used in a SQL statement or embedded PL/SQL block. The following formats do not support scaling:
PIC S9(n) COMP
PIC S9(n) COMP-4
PIC S9(n) COMP-5
PIC S9(n) BINARY
PIC 9(n) COMP
Action: Remove the scale or use a datatype that support scaling.
Cause: A variable declared with DISPLAY-1 in the usage clause without PIC G or PIC N in the picture clause was used in a SQL statement.
Action: Replace DISPLAY-1 with DISPLAY or change the picture clause to use PIC N or PIC G.
Cause: The keyword VARYING was used in a PIC N variable declaration.
Action: Remove the keyword VARYING from the variable declaration. If you want to declare a PIC N VARCHAR variable, specify the precompiler option VARCHAR=YES and declare the variable as an implicit VARCHAR group item as illustrated by the following example:
EXEC SQL BEGIN
DECLARE SECTION END-EXEC.
...
01 ENAME.
05 ENAME-LEN PIC S9(4) COMP.
05 ENAME-ARR PIC N(20).
...
EXEC SQL END DECLARE
SECTION END-EXEC.
Cause: The PIC clause was used when declaring a COMP-1 or COMP-2 variable.
Action: Remove the PIC clause from the variable declaration.
Cause: The SYNC clause was used when declaring a variable that is being used as a host variable.
Action: Remove the SYNC clause from the variable declaration.
Cause: The JUST clause was used when declaring a variable that is being used as a host variable.
Action: Remove the JUST clause from the variable declaration.
Cause: The OCCURS clause with the TO TIMES subclause was used when declaring a variable that is being used as a host variable.
Action: Remove the TO TIMES subclause from the variable declaration.
Cause: The OCCURS clause with the ASCENDING or DESCENDING KEY IS subclause was used when declaring a variable that is being used as a host variable.
Action: Remove the ASCENDING or DESCENDING KEY IS subclause from the variable declaration.
Cause: A variable declared with an OCCURS INDEXED clause was used in a SQL statement or embedded PL/SQL block.
Action: Remove the OCCURS INDEXED clause from the variable declaration.
Cause: The RENAMES clause was used when declaring a variable that is being used as a host variable.
Action: Re-declare the host variable without using the RENAMES clause.
Cause: A size which is specified which is not valid for the specified data type.
Action: Specify a size which is valid for the specified type.
Cause: A scale which is specified which is not valid for the specified data type.
Action: Specify a scale which is valid for the specified type.
Cause: A variable used in a SQL statement was not declared in the Declare Section or its name is misspelled.
Action: Add or correct the variable declaration.
Cause: There is more than one variable of the same name and the qualification given was insufficient to determine which variable the reference was to.
Action: Use more complete qualification in the variable reference.
Cause: The name of a descriptor, statement, or cursor was not declared or is misspelled, or was declared as a different kind of SQL identifier.
Action: Add or correct the descriptor, statement, or cursor declaration.
Cause: The SQL identifier (cursor name, statement name, etc.) has already been defined in another way.
Action: Do not redefine the SQL identifier. Use a different name.
Cause: An indicator variable used in a SQL statement was not declared in the Declare Section or its name is misspelled.
Action: Add or correct the indicator variable declaration.
Cause: An unacceptable group item variable was used in a SQL statement or its name is misspelled.
Action: Correct the group item variable declaration or its use in the SQL statement.
Cause: An indicator variable was not declared in the Declare Section as a 2-byte integer. Indicator variables must be defined as 2-byte integers.
Action: Redefine the indicator variable as a 2-byte integer.
Cause: A host variable array was used with an indicator array declared with a smaller dimension. For example:
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 EMP-NUM OCCURS 4 TIMES PIC S9(4) COMP.
01 EMP-NUM-IND OCCURS 2 TIMES PIC S9(4) COMP.
EXEC SQL END DECLARE SECTION END-EXEC.
... SELECT ... INTO EMP-NUM:EMP-NUM-IND ...
Action: Increase the size of the indicator array.
Cause: In an EXEC SQL statement, an indicator variable had the same name as a host variable. The names of a host variable and its associated indicator variable must be different. Also, an indicator variable cannot be used as a host variable.
Action: Rename the host or indicator variable.
Cause: A host table was used in the WHERE clause of a SELECT-INTO statement or in the SELECT list of a SELECT-INTO statement.
Action: Rewrite the SELECT statement without using tables or use a cursor.
Cause: The size of a table variable in an INTO/USING clause is too small for the number of rows processed.
Action: Declare all table variables in the INTO/USING clause to have at least the minimum dimension given.
Cause: The count variable in a FOR clause has the wrong datatype. The datatype must be NUMBER or LONG (or be compatible with NUMBER or LONG).
Action: Check the declaration and check that the count variable has a datatype of NUMBER or LONG (or a compatible Oracle or host-language datatype).
Cause: An Oracle extension to the ANSI/ISO standard was used. Specifically, a pointer or nonconforming datatype such as VARCHAR was used. For example, the offending code might look like:
EXEC SQL BEGIN DECLARE SECTION END-EXEC.
01 USERNAME PIC X(10) VARYING
EXEC SQL END DECLARE SECTION ENDThis informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, a non-ANSI function was used. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use this function.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, a nonconforming SQL statement such as PREPARE was used. For example, the offending code might look like:
EXEC SQL PREPARE sql_statement FROM :HV END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the nonconforming statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, dynamic SQL or embedded PL/SQL was used. For example, the offending code might look like:
EXEC SQL EXECUTE
BEGIN
SELECT
...
END;
END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use dynamic SQL or embedded PL/SQL.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, a nonconforming keyword such as NOTFOUND, STOP, RAISE, or DO was used in the WHENEVER statement. (Note that NOT FOUND is ANSI-compliant.) For example, the offending code might look like:
EXEC SQL WHENEVER SQLERROR STOP END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the nonconforming keyword.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the parameter RELEASE, COMMENT, or FORCE were used in a COMMIT or ROLLBACK statement. For example, the offending code might look like:
EXEC SQL ROLLBACK RELEASE END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the nonconforming parameter.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, one of the following statements was used:
Action: No action is required. However, for ANSI/ISO compliance, do not use any of these statements.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the DROP TABLE statement was used. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use the DROP statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the FOR clause was used in an array-processing SQL statement. For example, the offending code might look like:
EXEC SQL FOR :limit INSERT INTO EMP (EMPNO, JOB, DEPTNO)
VALUES (:emp_number, :job_title, :dept_number) END-EXECThis informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the FOR clause.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the CONNECT statement was used to log on to ORACLE. For example, the offending code might look like:
EXEC SQL CONNECT :username IDENTIFIED BY :password END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, specify the AUTO_CONNECT command-line option instead of using a CONNECT statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the AT <db_name> clause was used in a SQL statement. For example, the offending code might look like:
EXEC SQL AT oracle3 COMMIT RELEASE END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the AT <db_name> clause.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the EXEC SQL VAR statement was used.
Action: No action required. However, for ANSI/ISO compliance, do not use the EXEC SQL VAR statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the keyword WORK was used in a COMMIT or ROLLBACK statement. For example, the offending code might look like:
EXEC SQL COMMIT WORK RELEASE END-EXEC.This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action required. However, for ANSI/ISO compliance, do not use the keyword WORK.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the TO SAVEPOINT <save_id> clause was used in a ROLLBACK statement.
Action: No action required. However, for ANSI/ISO compliance, do not use the TO SAVEPOINT clause.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the DECLARE DATABASE statement was used.
Action: No action required. However, for ANSI/ISO compliance, do not use this statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the DECLARE TABLE statement was used.
Action: No action required. However, for ANSI/ISO compliance, do not use this statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the one of the following statements was used:
Action: No action is required. However, for ANSI/ISO compliance, do not use any of these statements.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, a group item variable was used as a host variable. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use group items as host variables.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, the ARRAYLEN statement was used. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use this statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, an EXEC ORACLE statement was used. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use this statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, a variable declared of VARYING type was used in a SQL statement. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use this statement.
Cause: An Oracle extension to the ANSI/ISO SQL standard was used. Specifically, an implicit VARCHAR variable was used in a SQL statement. This informational message is issued by the FIPS Flagger when FIPS=YES.
Action: No action is required. However, for ANSI/ISO compliance, do not use this statement.
Cause: A generic tokenizer error was found.
Action: Do the appropriate action to fix the indicated error.
Cause: The character string was not terminated with a quote or apostrophe as appropriate or line continuation was not correct.
Action: Check that the character string is terminated properly and that line continuation syntax is correct.
Cause: A block of pseudo-text has not been properly terminated with "==".
Action: Terminate the pseudo-text at the appropriate place with "==".
Cause: An EXEC statement began in Area A (before column 12).
Action: Shift the EXEC statement to the right to start it in Area B (in or after column 12).
Cause: No EXEC SQL CONTEXT USE statement was encountered and the option threads=yes was requested.
Action: Ensure that the necessary context variable (of type sql_context) has been declared, ALLOCATEd, and USEd prior to any executable SQL statements.
Cause: The runtime context variable referenced in an EXEC SQL CONTEXT USE statement is not of type sql_context.
Action: Declare your runtime context variable of type sql_context.
Cause: EXEC SQL ENABLE THREADS or one of the EXEC SQL CONTEXT statements has been used, even though option THREADS is set to NO.
Action: Specify option THREADS=YES or remove the EXEC ENABLE THREADS or EXEC SQL CONTEXT statement from the source code.
Cause: An explicit AT clause was used with an ALLOCATE statement or a FETCH/CLOSE statement also using a sql-cursor declaration.
Action: Remove the AT clause.
Cause: The precompiler was unable to log on to ORACLE with the specified username and password. An ORACLE error with given number occurred when the logon was attempted.
Action: Lookup indicated ORACLE database error message and take appropriate action.
Cause: The precompiler has encountered an include SQLCA statement after SQLCA has already been included. The SQLCA can only be included once.
Action: Remove the duplicate include SQLCA statement.
Cause: The SQLCA has been included and a SQLCODE variable has been declared. This is not allowed as references to the SQLCODE variable are ambiguous and will result in COBOL compiler errors.
Action: Use either the SQLCA or the SQLCODE variable. Remove either the include of the SQLCA or the SQLCODE variable declaration.
Cause: A FOR clause was used with a SELECT statement. This is not allowed as data returned from the last loop in the execution of the SELECT overwrites data returned in a previous loop.
Action: Remove the FOR clause from the SELECT statement and use a host- language construct to iteratively execute the SELECT statement.
Cause: When MODE={ANSI | ANSI14}, an attempt was made to use the WHENEVER SQLWARNING statement without declaring the SQLCA. When MODE={ANSI | ANSI14}, declaring the SQLCA is optional, but to use the WHENEVER SQLWARNING statement, the SQLCA must be declared.
Action: Remove all WHENEVER SQLWARNING statements from the program or declare the SQLCA by hardcoding it or copying it into the program with the INCLUDE statement.
Cause: If mode=ORACLE, then a cursor defined with a WHERE CURRENT OF clause must also have a FOR UPDATE clause.
Action: Rewrite the cursor definition.
Cause: A fatal parsing error or token stack overflow error has been encountered.
Action: Fix the syntax error that is causing the parsing error.
Cause: A severe semantics error occurred because the USING clause was used with the OPEN cursor statement and the cursor declaration is not for a PREPAREd statement. The correct sequence of statements should be:
EXEC SQL prepare sv from :sel_stmt END-EXEC
EXEC SQL declare csv cursor for sv END-EXEC
EXEC SQL open csv USING :hv1, :hv2 END-EXEC
Action: Use the PREPARE statement for the SQL statement and use that in the DECLARE CURSOR statement.
Cause: A severe semantics error such as an unacceptable sql type in the EXEC SQL VAR statement was encountered.
Action: Provide an acceptable sql type in the EXEC SQL VAR statement or fix the problem causing the severe error.
Cause: Refer to the indicated PL/SQL error message for the indicated condition.
Action: Refer to the indicated PL/SQL error message to correct the SQL statement or embedded PL/SQL block.
Cause: The precompiler found an error in an embedded SQL statement or PL/SQL block.
Action: Refer to the indicated PL/SQL error message to correct the SQL statement or embedded PL/SQL block.
Cause: ARRAYLEN is only valid with PL/SQL arrays.
Action: Use an appropriate array type.
Cause: In an ARRAYLEN statement, the name of a previously declared host table was not specified. The first host variable in an ARRAYLEN statement must be a table. The second host variable, whichspecifies an array dimension, must be a 4-byte integer. The correct syntax follows:
EXEC SQL ARRAYLEN host_table (dimension) END-EXEC.The ARRAYLEN statement must appear along with, but somewhere after, the declarations of host_table and dimension.
Action: Check the spelling of both identifiers in the ARRAYLEN statement. If necessary, supply the missing host table name.
Cause: A valid table dimension was not specified in an ARRAYLEN statement. The table dimension must be specified using a previously declared 4-byte integer host variable, not a literal or expression. For example, the offending code might look like:
EXEC SQL ARRAYLEN ename_array (25) END-EXEC -- illegal dimension
Action: Supply a valid table dimension. If necessary, declare a 4-byte integer host variable for use in the ARRAYLEN statement.
Cause: Within a PL/SQL statement, a host variable was used with two different indicator variables or was used with an indicator variable in one instance and without an indicator in another instance.
Action: Change all references to the host variable so that they all use the same indicator variable or all use no indicator variable.
Cause: Within a PL/SQL statement, the variable was used as both a host variable and an indicator variable.
Action: Use different variables for host variables and indicator variables.
Cause: Indicator variables associated with host variables cannot be used in EXEC IAF statements such as GET and PUT in a user exit.
Action: Eliminate the indicator variables. If feasible (for example with Forms V4), use EXEC TOOLS statements, which do allow indicator variables. See the Programmer's Guide to the Oracle Precompilers for more information of EXEC IAF and EXEC TOOLS statements.
Cause: If a host variable is used to define a context name in an EXEC TOOLS GET CONTEXT or EXEC TOOLS SET CONTEXT statement, that host variable must be of a character type.
Action: Declare the context name to a host variable of a char type.
Cause: The host variable specifying an EXEC TOOLS context must be of a pointer type.
Action: Declare the context host variable to be a pointer type.
Cause: If a host variable is used to specify the message in an EXEC TOOLS MESSAGE statement, that host variable must be of a character type.
Action: Declare the message to a host variable of a char type.
Cause: Pro*COBOL had detected an abnormal condition in its internal data structures. This error message should not normally ever be produced. Customer service should be contacted to report the error.
Action: Correct any other errors which have been reported. If the internal errors still exist, examine the source code where the condition was detected and try modifying it in some way. Possibly this will alleviate the internal error condition.
Cause: Pro*COBOL was unable to access the message file containing message text. The file is possibly corrupt.
Action: Contact customer support for information on reinstalling the Pro*COBOL message files.
Cause: Pro*COBOL was unable to access the message file containing message text. The file is possibly corrupt.
Action: Contact customer support for information on reinstalling the Pro*COBOL message files.
02010-02400: Oracle Precompiler: Pro*C/C++ Release 3.0 MessagesCause: A string in a SQL statement, which should be delimited by single quotation marks, was not terminated properly.
Action: Check that all strings are delimited.
Cause: The precompiler found an identifier that was too long.
Action: Shorten the identifier. SQL identifiers should be limited to 18 characters.
Cause: A character constant with a single quotation mark was not terminated.
Action: Terminate the character constant.
Cause: The precompiler found an escape sequence that it could not process inside a string literal. This error can arise when multi-byte character strings that can contain shift-in or shift-out escape sequences are used.
Action: Correct the string representation.
Cause: The precompiler detected an error in C or embedded SQL syntax. This message is followed by a more specific error message.
Action: Correct the syntax error.
Cause: The precompiler could not open a header file that was specified using the #include preprocessor directive or the EXEC SQL INCLUDE statement. This can happen if the file specification is inaccurate or if read permission or read access rights on the file or on one or more of the directories in the path were not granted.
Action: Recheck that the file specification is correct, that the file exists, and that read permission has been granted so that the file can be read.
Cause: The pathname for include files exceeded the maximum length of 80 characters.
Action: Move the include file, or create an environment variable or logical to shorten the pathname.
Cause: The precompiler could not open an output file. This could be a generated code output file (.c file) or a listing file. This message can result from many causes. For example:
Action: Track down the cause of the error, as suggested above, and correct it.
Cause: A C comment, either in C code or in an embedded SQL statement, was not terminated.
Action: Find the unterminated comment and terminate it with */.
Cause: This message indicates that a warning condition occurred as the precompiler was doing the preprocessor pass. A more specific warning message will follow this message.
Action: Correct the condition according to the action specified for the message that follows.
Cause: This message indicates that an error condition occurred as the precompiler was in the preprocessing phase. A more specific error message will follow this message.
Action: Correct the error according to the action specified for the message that follows.
Cause: A string constant contains a newline character. For example,
char x[] = "Hello
world";
Action: Remove the newline character.
Cause: The precompiler encountered an end of file while parsing an EXEC SQL statement.
Action: Add the statement terminator(;) or complete the EXEC SQL statement.
Cause: The precompiler encountered an end of file while parsing a PL/SQL statement (exec sql execute ...).
Action: Complete the PL/SQL statement.
Cause: The precompiler found a multi-byte character string in an embedded PL/SQL statement. For example, the offending code might look like
exec sql execute
declare
name char(10) := N'Matsuda';
begin
....
end;
end-exec;
Action: Remove multi-byte character string from the PL/SQL block or rewrite the declaration without using NLS_CHAR.
Cause: The precompiler detected a multi-byte character host variable (NCHAR literal) when the option NLS_LOCAL was not set to TRUE on the command line. When NLS_LOCAL=TRUE, the runtime library (SQLLIB) performs blank-padding and blank-stripping for host variables that are of multi-byte types.
Action: Specify NLS_LOCAL=TRUE on the command line.
Cause: A user configuration file inside a user configuration file cannot be specified. That is, nested configuration files cannot be nested.
Action: If there are nested configuration files, move the options from the nested files to the top-level file.
Cause: An option on the command line was specified, but a value for it was not included. For example, the offending code might look like:
proc ina=sample1 oname=could trigger this error message.
Action: Provide a value for the option.
Cause: A non-existent option on the command line was specified.
Action: See the Programmer's Guide to the Oracle Precompilers for a list of the valid command-line options and their possible values.
Cause: A value for a command-line option was incorrectly specified.
Action: See the Programmer's Guide to the Oracle Precompilers for the correct syntax for specifying command-line option values.
Cause: A value specified for a command-line option was not within the accepted range. For example, the range for the MAXOPENCURSORS option is 5 to 256. If a value outside this range is specified, this message is triggered.
Action: See the Programmer's Guide to the Oracle Precompilers for the ranges that option values can take.
Cause: An option name was partially specified on the command line that made it non unique. For example, in the command line
proc in=t.pcthe "in" option can imply either the iname or include option.
Action: Provide sufficient characters on the command line to make the option name unique.
Cause: A non-existent user configuration file was specified on the command line with the config option.
Action: Provide a valid filename for the configuration file.
Cause: An option was entered inline that can only be entered on the command line or in a configuration file. For example, the offending code might look like
EXEC ORACLE option (nls_char=<name>);The nls_char option can only be entered on the command line or in a configuration file.
Action: Remove the option from the source file, and specify it on the command line.
Cause: The system configuration file has a standard name (pmscfg.h) and a location that is operating-system dependent. On UNIX systems, it is located in the $ORACLE_HOME/proc directory. If a file named pmscfg.h is not found in the standard location, this warning message is issued.
Action: Create a system configuration file in the standard location. The file can be empty. See also the operating system-specific Oracle documentation.
Cause: An option that takes a list of values was entered. The value list did not have a closing parenthesis. This error may also occur if the list of values entered on a single line was too long and Pro*C truncated it.
Action: Ensure that all value lists are terminated with a closing parenthesis. Split long value lists into individual entries.
Cause: The precompiler connected to Oracle but could not invoke the PL/SQL engine. This error can result if an earlier release of Oracle is used without the Procedural Option.
Action: To use PL/SQL, upgrade to a more recent release of Oracle.
Cause: The precompiler could not open the input file. This is the .pc file specified in the INAME= option. This means that the file does not exist, that a directory was incorrectly specified in the pathname, or that the person running the precompiler does not have read permission for the file.
This message could also result from operating-system errors. For example, an unmounted file system or disk I/O errors, could trigger this error.
Action: Check that permission to read the file exists and that the full pathname has been specified correctly. Check for operating system-specific problems. See also the operating system-specific Oracle documentation.
Cause: The precompiler issues this message after a more specific message.
Action: Correct the problem specified in the previous message or messages.
Cause: The username was specified on the command line without a password. For example:
proc sqlcheck=full iname=sample1.pc userid=scott/
Action: Re-enter the command line, and include the password.
Cause: The precompiler could not connect to Oracle with the username, password, and, if applicable, database link that was supplied. Note that this is a precompiler message, not a run time message. This means that the USERID option value, either on the command line or in a configuration file, was incorrect.
Action: Check that the username and password are current and correct. Run SQL*DBA or SQL*Plus and verify that connection can be made using that username and password.
Cause: The precompiler could not open the listing file. This message can result from many causes. For example:
Action: Track down the cause of the error, as suggested above, and correct it.
Cause: The USERID option was specified on the command line, but SQLCHECK was not equal to FULL or SEMANTICS. The USERID has no effect, unless SQLCHECK=FULL or SQLCHECK=SEMANTICS.
Action: This is a warning message only.
Cause: The PARSE=FULL and CODE=CPP options were both specified on the command line. The PARSE=FULL option invokes the C parser, which does not understand any C++ constructs generated by the precompiler with CODE=CPP option.
Action: Set the PARSE option to either NONE or PARTIAL if the CODE=CPP option is specified.
Cause: UNSAFE_NULL=YES was specified on the command line, but either the MODE option was not ORACLE or the DBMS option was not V7 or V8.
Action: Specify MODE=ORACLE and DBMS=V7 or V8 when using UNSAFE_NULL=YES.
Cause: SQLCHECK=NONE was specified on the command line but is not supported in this release. SQLCHECK=SYNTAX was used instead.
Action: This is a warning message only. To avoid this warning, specify SQLCHECK=SYNTAX or SQLCHECK=SEMANTICS.
Cause: DBMS=V6_CHAR was specified on the command line but is a no longer supported option. The options CHAR_MAP=VARCHAR2 andDBMS=V7 were used instead.
Action: This is a warning message only. To avoid this warning, specify CHAR_MAP=VARCHAR2 and, if required, DBMS=V7.
Cause: DBMS=V6 was specified, and CHAR_MAP was specified with a value other than VARCHAR2. The CHAR_MAP value is ignored.
Action: This is a warning message only. To avoid this warning, specify a DBMS value other than DBMS=V6 or use CHAR_MAP=VARCHAR2.
Cause: OBJECTS=YES was specified on the Pro*C command line, but the DBMS option value was not valid.
Action: This is a warning message only. To avoid this warning for OBJECTS=YES, use DBMS=V8 or DBMS=NATIVE with a V8 database.
Cause: This is an internal error message not usually issued.
Action: Call Oracle customer support.
Cause: This is an internal error message not usually issued.
Action: Call Oracle customer support.
Cause: This is an internal error message not usually issued. It indicates that a C string function, such as strcpy or strlen, returned an error.
Action: Call Oracle customer support.
Cause: A zero length option was specified on the command line.
Action: Re-enter the command line with a valid option.
Cause: This is a final message that the precompiler issues when information about the command-line options has been requested. For example, if the command
proc ?is issued to get a list of the current default values for the command-line options, this message appears at the end of the list.
Action: No action required.
Cause: This is an internal message for program exceptions. An unexpected condition was encountered by the command-line processor and a consistency check failed. Some possible causes of this message include:
Action: Report this error to Worldwide Support after gathering the following information:
Cause: An equal sign (=) was either immediately preceded or followed by a blank character.
Action: Precompile your program again without blank characters on either side of any equal sign (=) on the command line.
Cause: An error was encounter at the given location.
Action: Check the named source file and correct the error using the additional information which follows this error message.
Cause: An error was encounter at the given location.
Action: Check the listed source file and correct the error using the additional information which follows this error message.
Cause: The file contains an error, but could not be reopened to list or display the incorrect line.
Action: Check that the file is intact and it has read permission. Then rerun the operation.
Cause: A new source file was opened while producing the list file.
Action: No action required; this is an informational message.
Cause: A source file was closed while producing the list file.
Action: No action required; this is an informational message.
Cause: This error indicates that the precompiler parser encountered a badly-formed identifier or keyword.
Action: Correct the syntax.
Cause: This general message precedes one or more specific messages that detail the nature of the error.
Action: No action required. Correct the errors diagnosed in the following message(s).
Cause: The precompiler parser encountered a TYPEDEF statement that had no name after the type specification. For example
typedef int;
Action: Correct the syntax.
Cause: The parser can emit this message when a general syntax error occurs, for example, an unmatched `{' or `('.
Action: Correct the syntax.
Cause: EXEC SQL INCLUDE statements cannot be nested. Also, an EXEC SQL INCLUDE statement cannot be put inside a file that is included using the #include preprocessor command.
Action: Recode the program so that the nested include statement is not required.
Cause: The precompiler parser encountered a syntax error, either in C code or in SQL code. A more specific message should follow.
Action: No action required for this message. Take the appropriate action for any following messages.
Cause: A Data Definition Language statement cannot use host variables. For example, the statement
CREATE TABLE :table_name (c1 char(10));is illegal, because the name of the table in a CREATE TABLE statement cannot be represented using a host variable.
Action: Use dynamic SQL to create the names of database objects (tables, views, columns, etc.) at runtime. See the Programmer's Guide to the Oracle Precompilers for information about dynamic SQL.
Cause: The precompiler parser encountered a #DEFINE directive that had no macro name associated with it. For example,
#define
Action: Correct the syntax.
Cause: The precompiler parser encountered a #INCLUDE directive that had no filename associated with it. For example,
#include
Action: Specify appropriate filename with the #INCLUDE directive, or correct the syntax.
Cause: A macro invocation in the source does not have the same number of arguments as the macro definition in the #DEFINE line.
Action: Correct the macro reference or the macro definition.
Cause: C++ punctuation sequences are not supported by the Pro*C/C++ precompiler.
Action: Rewrite your C++ code without using punctuation sequences and precompile it again.
Cause: The semantic analysis phase of the precompiler could not re-open the input file to generate output code.
Action: Check that the input file and its directory's protections and privileges do not change during precompilation.
Cause: The precompiler was not able to open one or both of the temporary files that are required for code generation. The user executing the precompiler must have write permission (and/or the appropriate privileges) on the current directory.
Action: Check that permission exists to create files in the directory where you precompile.
Cause: The precompiler was not able to open a header file specified using the #INCLUDE preprocessor directive or the EXEC SQL INCLUDE statement. This can happen if the file specification is inaccurate or if read permission or read-access rights on the file or on one or more of the directories in the path have not been granted.
Action: Recheck that the file specification is correct, that the file exists, and that read permission has been granted so that the file can be read.
Cause: A C function using invalid syntax was declared.
Action: Consult a C programming manual and correct the declaration.
Cause: All C functions using either the traditional style (K&R style) function declarations or the new (ANSI) style must be declared; the two styles cannot be mixed.
Action: Adopt a consist declaration style for functions.
Cause: A C function was declared with a name that is not a legal C identifier.
Action: Use legal C identifiers for all function names.
Cause: A function can be declared or defined using the following syntax:
int func1(void)to indicate that the function has no parameters. void can be used only once in this case.
Action: Remove the extra voids in the function definition or declaration.
Cause: A function definition written in ANSI C must have both the name and the type for all parameters.
Action: Rewrite the function definition so that it contains the name of each parameter.
Cause: A formal parameter in a function declaration was specified without giving its type.
Action: Rewrite the function declaration and include the types of all parameters in function declarations.
Cause: Many C compilers allow structures to be passed to and returned from functions. Although a VARCHAR is implemented as a C struct, VARCHARs must be passed to a function as pointers.
Action: Take the address of a VARCHAR when it is passed to a function. See the example in the section "Referencing VARCHAR Variables" in the Programmer's Guide to the Oracle Precompilers.
Cause: Host variables cannot contain bit fields.
Action: Recode the application to remove the bit fields.
Cause: A VARCHAR array with more than two dimensions was declared. Multidimensional arrays are not supported as host variables.
Action: Recode the application to remove multidimensional array usage.
Cause: When a VARCHAR is declared, a length specification is mandatory. For example, the following VARCHAR declaration is meaningless, hence illegal:
VARCHAR v1[];
Action: Specify the length for each declared VARCHAR.
Cause: A SIZEOF operator was used where a precompiler expression was expected. For example, as the length of a VARCHAR.
Action: Eliminate the SIZEOF operator in this instance.
Cause: The specified expression does not evaluate to a constant. Such expressions are required, for example, as the length of a VARCHAR.
Action: Replace the expression with one that does evaluate to a constant integer.
Cause: A non-arithmetic operator was present in a constant expression.
Action: Rewrite the expression to eliminate the non-arithmetic operator.
Cause: A illegal cast is present in the expression.
Action: Remove the illegal cast.
Cause: The specified expression is missing the declaration of a type.
Action: Specify a type for the expression.
Cause: The type of a variable does not match its usage. For example, in dynamic SQL, a host variable containing the text of a SQL statement must be declared as a C character type or be equivalenced to the SQL type STRING.
Action: Remove the declaration.
Cause: The arithmetic expression must be specified with integral types.
Action: Rewrite the expression using integral types.
Cause: Pointer values cannot be added, multiplied, or divided. The only arithmetic operation permitted with pointers is subtraction.
Action: Recode to avoid this error message.
Cause: An identifier used in a SQL statement was not defined. For example, a cursor name was referenced that had not been declared, or in a DECLARE CURSOR statement, a statement name was used that had not been PREPAREd.
Action: Check that all SQL identifiers, such as cursor names and statement names, have been defined before use.
Cause: The name of a typedef was found where a variable was expected.
Action: Rewrite the expression and remove the reference to the typedef.
Cause: The name of a variable was found where a typedef was expected.
Action: Rewrite the expression and specify the correct typedef reference.
Cause: An attempt was made to use a non-pointer type as a pointer.
Action: Rewrite the expression.
Cause: A structure component using invalid syntax was referenced. For example, a -> operator was used instead of a required `.' operator.
Action: Correct the invalid reference.
Cause: A scalar host variable was used in a context where a structure (or its pointer) is required.
Action: Make the host variable a structure or add more scalar host variables to satisfy the SQL syntax requirements.
Cause: A structure component was referenced that was not declared as part of the structure.
Action: Redefine the structure member.
Cause: A function was referenced that was not declared. All function references must be declared.
Action: Declare the function.
Cause: The expression does not evaluate to an integer. For example, a SQL FOR expression must evaluate to an integral type.
Action: Rewrite the expression.
Cause: All SQL identifiers must be defined before they are used. This message can result when a CURSOR or STATEMENT is not declared (defined) before being referenced.
Action: Define the SQL identifier before it is used.
Cause: A SQL identifier (such as a cursor name) can be defined only once.
Action: Do not redefine the SQL identifier. Use a different name.
Cause: A SQL statement identifier was referenced in a DECLARE... CURSOR statement that was not PREPAREd.
Action: Check that all SQL statement names have been declared. Remember that SQL statement names are identifiers, not variables, and that they are local to the precompilation unit.
Cause: A cursor name was used in an OPEN, FETCH, or CLOSE statement that had not been DECLAREd.
Action: Check that all SQL cursor names have been declared. Remember that cursors are identifiers, not variables, and that they are local to the precompilation unit.
Cause: In a Dynamic SQL Method 4 application, the DECLARE... CURSOR statement must name a statement identifier that has been PREPAREd in a preceding statement. The PREPARE statement must physically (not logically) precede the DECLARE command.
Action: This error message is followed by another message that gives the line and column of the reference to the statement. Recode the application.
Cause: The host variable was declared using a C type that is not permitted as a host variable. See the Programmer's Guide to the Oracle Precompilers for a list of the permissible C types for host variables.
Action: Use a permissible host variable type.
Cause: Host variable arrays of scalars with more than 1 dimension cannot be declared. The only host variables allowed to be multi-dimensioned are CHAR and VARCHAR.
Action: Recode the application because this kind of host variable usage is not possible with database operations.
Cause: A structure used as a host variable may not have structures or unions nested within it.
Action: Rewrite the variable declaration.
Cause: A C union as a host variable cannot be used.
Action: This error message is followed by another message that gives the line and column of the reference to the illegal union. Recode, using a struct or individual scalar host variables.
Cause: Bit fields are not allowed in host variables because they are meaningless for database DML operations.
Action: This error message is followed by another message that gives the line and column of the reference to the offending host variable. Recode the application.
Cause: A host variable has an unpermitted type (i.e.; enum, void, etc).
Action: Rewrite the declaration, using a permissible host variable type.
Cause: When MODE=Oracle, a cursor defined with a WHERE CURRENT OF clause must also have a FOR UPDATE clause.
Action: Rewrite the cursor definition.
Cause: A cursor definition must be a SELECT statement.
Action: Rewrite the cursor definition.
Cause: Host variable arrays in a single statement should all be of equal size.
Action: Redefine the bind variable array lengths to all be the same size.
Cause: Embedded PL/SQL blocks require that the command-line flag SQLCHECK=SEMANTICS is used.
Action: Use the SQLCHECK=SEMANTICS option. This also requires that the USERID connect option be given.
Cause: A database entity, such as a table or column name, was referenced, that does not exist. This is a compile time error, not a runtime error.
Action: Check that all referenced objects in PL/SQL statements actually exist and that the necessary access permission on them have been granted.
Cause: A PL/SQL statement was used illegally.
Action: Check the PL/SQL User's Guide and Reference for the correct syntax.
Cause: Indicator variables associated with host variables cannot be used in EXEC IAF statements such as GET and PUT in a user exit.
Action: Eliminate the indicator variables. If feasible (for example with Forms V4), use EXEC TOOLS statements, which do allow indicator variables. See the Programmer's Guide to the Oracle Precompilers for more information of EXEC IAF and EXEC TOOLS statements.
Cause: In a VAR or TYPE statement, certain Oracle types require that the precision be specified. For example, VARCHAR2 or CHAR.
Action: Indicate the precision.
Cause: Datatype or variable equivalencing to the datatypes NUMBER or DECIMAL cannot be used. See the "Datatype Equivalencing" section in the Programmer's Guide to the Oracle Precompilers for more information.
Action: Use the appropriate datatype for the application.
Cause: The datatype specified could not be equivalenced, or the syntax was incorrect in the VAR or TYPE statement.
Action: See the Programmer's Guide to the Oracle Precompilers for a list of the datatypes that can be equivalenced and the correct syntax of the VAR or TYPE statement.
Cause: PL/SQL requested a bind position that does not exist. This is an internal error.
Action: Call Oracle customer support for assistance.
Cause: This error message precedes a more specific error message.
Action: No action required. Correct the error(s) reported in the following message(s).
Cause: The Pro*C Precompiler reads header files referenced in #INCLUDE directives and uses the values defined in them. But the precompiler never generates code using statements in header files, so use of SQL statements in these files is illegal.
Action: Move the SQL statement(s) into the main body of the application or use EXEC SQL INCLUDE to check that the included file is precompiled.
Cause: A command-line option that is not used in Pro*C Release 2.0 was specified. For example, the option AREASIZE is no longer valid with precompilers used with the Oracle Server.
Action: No action required. This is an informational message.
Cause: This is a generic warning message. It precedes a more specific warning.
Action: No action required. Correct the error(s) indicated in the following messages.
Cause: Only objects that are lvalues (that resolve to an address) can be host variables. Because a function call is not an lvalue, one cannot be used in place of a host variable.
Action: Recode the application.
Cause: A declared array must be specified as the argument for an ARRAYLEN statement. Declare the array textually before the ARRAYLEN statement. See the Programmer's Guide to the Oracle Precompilers for the syntax of the ARRAYLEN statement.
Action: Correct the statement, specifying a host array as the argument.
Cause: The expression that specifies the ARRAYLEN dimension must evaluate to an integer. For example, the statement
EXEC SQL ARRAYLEN my_array(1.3)cannot be parsed.
Action: Correct the statement, using an integral dimension.
Cause: Arrays of some host variables types are not allowed and hence also cannot be used in ARRAYLEN statements. VARCHAR and DATE are examples.
Action: Specify an array with a datatype that can be used in host arrays.
Cause: ARRAYLEN is only valid with arrays that can be bound in PL/SQL blocks.
Action: Use an appropriate array type.
Cause: When MODE=ANSI is specified at precompile time, all host variables must be declared inside Declare Sections. Remember that MODE=ANSI refers to ANSI SQL, not ANSI C.
Action: Add the EXEC SQL BEGIN DECLARE SECTION... EXEC SQL END DECLARE SECTION statements around all host variable declarations.
Cause: If the host variable is a structure, the associated indicator variable must also be a structure.
Action: Recode the application to create an indicator variable as a structure.
Cause: When a structure containing indicator variables is declared and associated with a host structure, the indicator structure must contain the same number of fields as the host structure. This is so even when some of the indicators will not be used or even when it would not make sense to do so (for fields constrained as NON NULL, for example).
Action: Redeclare the indicator variable with the correct number of fields.
Cause: An indicator array must have dimension greater than or equal to the corresponding host variable array dimension.
Action: Change the dimension of the indicator array.
Cause: The semantics of certain operations (such as character comparison) in Oracle Version 6 are not 100% compliant with the ANSI/ISO SQL standards. When V6 semantics are requested, using the DBMS=V6 or DBMS=V6_CHAR option, precompilation with MODE=ANSI is not permitted.
Action: Do not use ANSI mode with the V6 options.
Cause: The only C type allowed for indicator variables is short. An array of indicator variables must be an array of shorts.
Action: Redeclare the indicator variables and/or indicator arrays.
Cause: If a host variable is used to define a context name in an EXEC TOOLS GET CONTEXT or EXEC TOOLS SET CONTEXT statement, the host variable must be a character type.
Action: Redeclare the context name to a host variable of a CHAR type.
Cause: The host variable specifying an EXEC TOOLS context must be a pointer type.
Action: Re-declare the variable, making sure that it is a pointer.
Cause: If a host variable is used to define a context name in an EXEC TOOLS GET CONTEXT or EXEC TOOLS SET CONTEXT statement, the host variable must be a character type.
Action: Re-declare the message to a host variable of a char type.
Cause: The argument of a FOR clause must be specified as an integer or as an identifier containing an integer.
Action: Rewrite the FOR clause.
Cause: A SQL statement containing a SELECT command cannot contain a FOR clause. The meaning of such a statement would be unclear.
Action: Rephrase the SELECT statement, removing the FOR clause.
Cause: An improper declaration was placed in a Declare Section. This message is usually caused by including an EXEC SQL TYPE or EXEC SQL VAR declaration in a Declare Section.
Action: Move the declaration outside the SQL DECLARE section.
Cause: The value assigned to the SQLCHECK option in an EXEC ORACLE statement in a program was greater than the value given either on the command line or greater than the default value if no SQLCHECK option was given on the command line.
The order of the option values is SEMANTICS > SYNTAX > NONE.
When this warning message is issued, the original value of SQLCHECK (the default or the command-line value) stays in effect.
Action: Remove or recode the EXEC Oracle option(s) in the .pc source file to avoid this warning message.
Cause: A SQL statement other than a declarative, datatype equivalence or WHENEVER statement was found outside the body of a function when PARSE=FULL.
Action: Move the SQL statement inside the body of a function.
Cause: The DEF_SQLCODE option may not be specified if a SQLCODE declaration already explicitly appears in the program.
Action: Remove the SQLCODE declaration from the program or specify DEF_SQLCODE=NO (the default).
Cause: An array of implicit VARCHARs was declared when HOST_VARCHAR=TRUE.
Action: Rewrite the implicit VARCHAR declaration without using arrays.
Cause: A variable declared as a National Language character using the NLS_CHAR option was not declared as a char or implicit VARCHAR.
Action: Declare the variable as a char or implicit VARCHAR or do not specify using the NLS_CHAR option.
Cause: A National Language character variable (specified using the NLS_CHAR option) has undergone datatype equivalencing using either the EXEC SQL VAR or TYPE statements.
Action: Do not equivalence National Language character variables.
Cause: NLS_CHAR was used to specify NLS multi-byte character variables without specifying MODE=ANSI.
Action: Specify MODE=ANSI on the command line when using NLS_LOCAL=TRUE.
Cause: An array declaration was given without an array length specifier.
Action: Provide the length for the array declaration.
Cause: The DBMS=V6_CHAR option was specified on the command line while indicating which host variables are to be treated by the precompiler as NLS multi-byte character variables. A multi-byte character string must be null-terminated, but if the DBMS=V6_CHAR option is specified, the precompiler pads the character arrays with blanks up to the length of the array without the null-terminator.
Action: Remove the DBMS=V6_CHAR option from the command line.
Cause: An explicit AT clause was used with an ALLOCATE statement or a FETCH/CLOSE statement also using a SQL_CURSOR declaration.
Action: Remove the AT clause.
Cause: A host bind variable was used in an ALLOCATE, FETCH or CLOSE statement that was not declared as a result set sql_cursor.
Action: Declare the variable to be of type sql_cursor.
Cause: A host array was used in the WHERE clause of a SELECT-INTO statement.
Action: Rewrite the SELECT statement without using arrays or use a cursor.
Cause: A host array was used in the SELECT list of a SELECT-INTO statement.
Action: Rewrite the SELECT statement without using arrays in SELECT list.
Cause: No EXEC SQL CONTEXT USE statement was encountered and the option THREADS=YES was requested.
Action: Ensure that the necessary context variable (of type sql_context) has been declared and that has been ALLOCATEd and USEd prior to any executable SQL statements.
Note: This error is only detected by Pro*C/C++ (beginning with release 2.2) and only if PARSE=FULL.
Cause: The runtime context variable referenced in an EXEC SQL CONTEXT USE statement is not of type SQL_CONTEXT.
Action: Declare your runtime context to be of type SQL_CONTEXT.
Cause: A SQL DECLARE SECTION appears nested inside another one.
Action: Do not nest DECLARE SECTIONS. Remove any nested inner ones.
Cause: An executable SQL statement appears inside a DECLARE SECTION.
Action: Move the SQL statement into the body of a function.
Cause: The values of INAME and ONAME are the same, or the default output filename is the same as that specified by ONAME.
Action: Use ONAME to specify a different filename for the output file.
Cause: An array of some unnamed struct was used as a host variable. When using arrays of structs, the struct requires a name or tag.
Action: Provide a name for the struct.
Cause: An array of a struct that contained arrays of scalars or two-dimensional char or VARCHAR fields was used as a host variable.
Action: Rewrite the struct so that there are no scalar arrays or two-dimensional char or VARCHAR fields.
Cause: A VARCHAR declaration was found in a file included using a #include form.
Action: Use the EXEC SQL INCLUDE form to include files with VARCHAR declarations instead.
Cause: An indicator variable was used in a host/indicator variable pair for some type in a statement that did not require or need one. Typically, indicator variables are not used in ALLOCATE and FREE statements for types other than object or collection types. They are also not used in OBJECT CREATE/DEREF statements for REF types.
Action: Remove the use of the indicator for the type in the specified statement. It will be ignored otherwise.
Cause: A CHAR_MAP option other than CHAR_MAP=VARCHAR2 was specified inline. Since DBMS=V6, this option is ignored for a character or string variable in the offending statement.
Action: Either set DBMS to something other than V6, or specify CHAR_MAP=VARCHAR2.
Cause: The specified host variable was not declared as a pointer type.
Action: Declare the host variable to be a pointer type.
Cause: Host variable arrays of the specified type are not supported.
Action: Rewrite your program so that there are no arrays of this type.
Cause: The object cache will be used for this host variable, but OBJECTS=NO was specified on the Pro*C command line.
Action: Specify OBJECTS=YES on the Pro*C command line when using the object cache.
Cause: The type of the indicator variable is not appropriate for the specified host variable.
Action: Change the type of the indicator variable to a valid type. Refer to the "Programmer's Guide to the ORACLE Pro*C/C++ Precompiler" for a discussion of appropriate indicator variable declarations.
Cause: The specified indicator variable was not declared as pointer type.
Action: Declare the indicator variable to be a pointer type.
Cause: No declaration was found for the type identifier of the variable.
Action: Provide a valid declaration for the type of the host variable. If using objects in your program, check that the OTT-generated header for the object type was #included and that the typefile was specified in the INTYPE option on the Pro*C command line.
Cause: When using the RETURNING clause in an OBJECT CREATE statement, only a single 'REF INTO :<host variable>' is expected. This error occurs if the expression list to which REF belongs is greater than one or if there are more than one host variables supplied in the into list.
Action: Rewrite the RETURNING clause as per the given specification.
Cause: In an OBJECT CREATE or DEREF statement, the types of the given Object and its associated REF do not match.
Action: Make sure that the Object and its REF have the same type. The type information is generated by OTT and should appear in the header file which OTT creates.
Cause: The expression is not an Object type. For example, many host variable expressions in the Navigational statements require that the variable be declared of some Object type.
Action: Rewrite the expression or declare the variable to be an Object.
Cause: The expression is not a REF type. For example, some host variables in the Navigational CREATE and DEREF statements are required to be declared of some REF type.
Action: Rewrite the expression or declare the variable to be a REF.
Cause: A bind variable for collections did not resolve to the type OCIColl.
Action: Check that the OTT-generated header for the collections type was properly #included in the Pro*C program and that the typefile was specified in the INTYPE option on the Pro*C command line.
Cause: A bind variable for object REF did not resolve to the type OCIRef.
Action: Check that the OTT-generated header for the object type was properly #included in the Pro*C program and that the typefile was specified in the INTYPE option on the Pro*C command line.
Cause: An explicit FOR clause was used in an OBJECT GET or OBJECT SET statement. Use of the FOR clause is illegal for these statements.
Action: Remove the FOR clause.
Cause: The number of attributes supplied in the attribute list of an OBJECT SET of GET statement does not match the total number of host variables also supplied in that statement.
Action: Either remove some attributes or remove some host variables from the statement in order to make the total count for each the same.
Cause: An attribute given in the attribute list of an OBJECT SET or GET statement is not a member of the specified object in that statement.
Action: Remove the attribute from the list.
Cause: An attempt was made to either GET or SET an attribute of an Object that itself was an Object or REF type.
Action: Remove the attribute from the attribute list in the statement.
Cause: The Object specified in an OBJECT GET or SET statement is an array which is illegal.
Action: Redeclare the Object so that it is not an array or subscript the Object so that only a single element of the Object array is specified.
Cause: An illegal type conversion was attempted in a Navigational GET or SET statement between the type of the Attribute and the type of the Host Variable.
Action: Change the type of either the Attribute or the Host Variable.
Cause: The array sizes of the Object and REF variables in an OBJECT CREATE or DEREF do not match.
Action: Adjust the array dimensions of the two host variables so that they are equal to one another.
Cause: An array was found in the host variable list of an OBJECT SET or GET statement.
Action: Only scalars are allowed (except for single dimensioned char or varchar variables) in the host variable list of an OBJECT SET or GET. Make sure to use only scalars in these statements.
Cause: An incomplete or perhaps missing type specification was given when declaring a host variable used in some SQL statement.
Action: Provide a complete type definition when declaring host variables intended for use inside any SQL statements.
Cause: No indicator variable was provided (or matched) with a specific host variable where one was explicitely required.
Action: Provide an indicator variable for use with the specified host variable in the given SQL statement.
Cause: An illegal value was given for the specified runtime context option in the CONTEXT <option> OPTION SET (or GET) statement.
Action: Use a valid option value in the statement for the specified option being manipulated by the statement.
Cause: The type of the host variable corresponding to a specific option value in a CONTEXT <option> OPTION SET (or GET) statement is invalid for that particular value.
Action: Use a type suitable for the specific value being manipulated.
Cause: There is a mismatch between the number of values specified and the number of valid host variables given in a CONTEXT <option> OPTION SET (or GET) statement.
Action: Use the same number of host variables as there are values given in that particular statement.
Cause: DBMS=V6 was specified on the command line, but is no longer a supported option value. The options DBMS=NATIVE and CHAR_MAP=VARCHAR2 were used instead.
Action: Check your program to verify that you are not depending on any V6 behavior. Please refer to the Programmer's Guide to the Pro*C/C++ Precompiler for effects of specifying DBMS=V6.
Cause: The semantics of certain operations (such as character comparison) in Oracle version 6 are not 100% compliant with the ANSI/ISO SQL standards. When V6 semantics are requested, using the DBMS=V6 or DBMS=V6_CHAR option, precompilation with MODE=ANSI is not permitted.
Action: Do not use ANSI mode with V6 options.