Error codes 600 – 699


600 Cannot create TEXT or BYTE value.

This statement creates a new BYTE or TEXT value, but some unexpected error prevented the creation of that value. Roll back the current transaction. Check the accompanying ISAM error code for more information. Possibly the storage space or tbspace has filled up, or you are not referring to a valid storage space. If the error recurs, please note all circumstances and contact Informix Technical Support.

601 Cannot delete TEXT or BYTE value.

This statement replaces or deletes a BYTE or TEXT value, but some unexpected error prevented the deletion of the old value. Roll back the current transaction. Check the accompanying ISAM error code for more information. Possibly a hardware error or data corruption of the storage space or tblspace occurred. If the error recurs, please note all circumstances and contact Informix Technical Support.

602 Cannot open TEXT or BYTE value.

This statement refers to a BYTE or TEXT value, but some unexpected error prevented locating the value. Roll back the current transaction. Check the accompanying ISAM error code for more information. Possibly a hardware error or data corruption of the storage space or tblspace occurred. If the error recurs, please note all circumstance, and contact Informix Technical Support.

603 Cannot close TEXT or BYTE value.

This statement writes a BYTE or TEXT value, but some unexpected error prevented finishing the creation of the value. Roll back the current transaction. Check the accompanying ISAM error code for more information. Possibly a hardware error or data corruption of the storage space or tblspace occurred. If the error recurs, please note all circumstances and contact Informix Technical Support.

604 Cannot read TEXT or BYTE value.

This statement refers to a BYTE or TEXT value, but some unexpected error prevented access to the value. Roll back the current transaction. Check the accompanying ISAM error code for more information; possibly a hardware error or data corruption of the storage space or tblspace occurred. If the error recurs, please note all circumstances and contact Informix Technical Support.

605 Cannot write TEXT or BYTE value.

This statement writes a BYTE or TEXT value, but some unexpected error prevented the creation of the value. Roll back the current transaction. Check the accompanying ISAM error code for more information; possibly a hardware error or data corruption of the storage space or tblspace occurred. One possible cause is that the storage space for this column is full. Another is that although a new chunk has been assigned to the storage space, pages cannot be allocated in it until the addition of the chunk has been logged and the log file closed. The database server administrator can use the tbmode -l or onmode -l command to force a log file to be closed. If the error recurs, please note all circumstances and contact Informix Technical Support.

606 Invalid storage-space name for TEXT or BYTE data.

If this statement refers to a storage space (for example, the CREATE TABLE statement might create a column with type TEXT IN blobspace-name), the name is invalid or does not exist. Review the identifiers intended as storage-space names. If they are spelled as you intended, consult with the database server administrator to find out whether they exist and are on-line. If the statement does not refer to a storage space, this is an internal error. If the error recurs, please note all circumstances and contact Informix Technical Support.

607 Text/Byte subscript error.

This statement refers to a TEXT or BYTE value that uses substring notation (numbers in square brackets that follow the name). However, the substring is not correctly written. Review all uses of substrings, and make sure that the first number in each is greater than zero but not greater than the length of the value; the second number is not less than the first; and the numbers are separated by a comma.

608 Illegal attempt to convert Text/Byte data type.

This statement is written to imply a conversion from a TEXT or BYTE value to another data type, for example, by combining it with other types in an expression or by inserting it into a column of another type. This action is not supported; TEXT and BYTE columns can only be selected or be copied into other columns of the same type. Check that the statement names the columns you intended and that they have the data types you thought.

609 Illegal attempt to use Text/Byte host variable.

This statement uses a host variable that is a TEXT or BYTE locator structure but combines it with data of some other type (for instance, in an expression or by inserting it into a column of another type). This action is not supported; host variables of these types may only be used for selecting from, creating, or inserting into columns of the same type.

610 Index not allowed on TEXT or BYTE columns.

This CREATE INDEX statement names a column of the TEXT or BYTE type; however, these types are not supported for indexing. Because no defined lexical ordering exists for these types, the database server does not know how to sort or compare them. Therefore it cannot build an inverted index. Possibly you understand the data well enough to understand how to extract an ordered set of key values from it. If so, perform the extraction into a separate column in the same table, and index that column.

611 Scroll cursor can’t select TEXT or BYTE columns.

The cursor that is named in this statement is associated with a SELECT statement that returns one or more TEXT or BYTE columns. Also, the cursor is declared with the SCROLL keyword. This action is not supported.Rows that are fetched through a scroll cursor are also stored in a temporary table. Because of the bulk of TEXT and BYTE values, this action would produce an unacceptable cost in time and disk space. Revise the declaration of the cursor to select the desired columns of other types and also the ROWID. After you fetch a row through the scrolling cursor, use a separate, nonscrolling cursor to fetch the BYTE or TEXT value(s), WHERE ROWID=host-var.

612 TEXT and BYTE columns are not allowed in the “group by” clause.

This SELECT statement selects one or more BYTE or TEXT values and also specifies those columns in the GROUP BY clause. This action is not supported. Since no defined lexical order to BYTE or TEXT values exists, the database server cannot order or compare them. Therefore it cannot group rows on their values. (This condition is true even of substrings selected from a BYTE or TEXT column.) Review your SELECT statement to ensure that the correct columns are named in the GROUP BY clause.

613 TEXT and BYTE columns are not allowed in the “distinct” clause.

This statement specifies DISTINCT values, but it also selects a BYTE or TEXT value. The database server does not know how to compare or order these values, so it cannot sort them, and it cannot locate duplicate values. You cannot use the DISTINCT keyword when these data types are selected. Reword your SELECT statement to either remove the keyword or select only normal columns.

614 TEXT and BYTE columns are not allowed in the “order by” clause.

This SELECT statement selects one or more BYTE or TEXT values, and also specifies those columns in the ORDER BY clause. This action is not supported. Because no defined lexical order to BYTE or TEXT values exists, the database server cannot order them. (This is true even of substrings selected from a BYTE or TEXT column.) Review your SELECT statement to ensure that he correct columns are named in the ORDER BY clause.

615 TEXT and BYTE columns are not allowed in this expression.

This statement uses an aggregate function, such as COUNT, SUM, MIN, MAX, or AVG, but applies it to a column that has the BYTE or TEXT data type. This action is not supported.
Review the use of each aggregate function to make sure that it is not applied to a BYTE or TEXT column.

616 A TEXT or BYTE subscript is not allowed within this context.

This UPDATE or INSERT statement specifies a subscripted column of BYTE or TEXT data type as a destination. Subscript notation is not allowed in this context; a BYTE or TEXT (or any other) value must be replaced in full. Revise the statement to assign into whole columns.

617 A TEXT or BYTE data type must be supplied within this context.

This statement assigns a value that is not a simple large object to a BYTE or TEXT column or assigns a BYTE or TEXT column to a column that is not a simple large object. Neither action is supported. BYTE and TEXT values must be assigned as whole units to columns of the same type. Check that the statement specifies the columns that you intended.

618 Error on copying TEXT or BYTE data.

This statement copies a BYTE or TEXT value from one row to another, but some unexpected error interfered with the operation. Roll back the current transaction. Check the accompanying ISAM error code for more information; possibly a hardware error, data corruption of the storage space or tblspace, or a shortage of disk space exists, or an invalid storage space was named. If the error recurs, please note all circumstances and contact Informix Technical Support.

619 A TEXT or BYTE error has occurred in the front-end application.

This statement transfers a BYTE or TEXT value between the database and the user program, but something has happened to prevent that. For example, perhaps it was not possible to allocate a buffer for a value that was located in memory. Check the accompanying ISAM error code for more information.

620 Unable to update next extent size.

This internal error indicates the database server cannot change an internal data structure (not a system catalog) that is stored in the root dbspace. Check the accompanying ISAM error code for more information. Possibly corruption of the root dbspace occurred. Have the database server administrator run the oncheck, onutil, or tbcheck utility.

621 Unable to update new lock level.

This internal error indicates that the database server is unable to convert a lock from shared to exclusive. Check the accompanying ISAM error code for more information. Possibly a hardware error or a problem with shared memory exists. If the error recurs, please note all circumstances and contact Informix Technical Support.

622 Error on locating constraint index index-name.

This internal error shows that the database server is trying to test a new or updated row for uniqueness under a UNIQUE or PRIMARY KEY constraint, but the index that implements the constraint cannot be found. Check the accompanying ISAM error code for more information. Corruption of the system catalog tables or the root dbspace or a hardware problem might have occurred. If the error recurs, please note all circumstances and contact Informix Technical Support.

623 Unable to find CONSTRAINT constraint-name.

The constraint specified in this statement cannot be found. Review the spelling of the name shown. If it is as you intended, check the names of existing named constraints by querying the sysconstraints table as shown in the following example. If the owner name shown for the desired constraint is not yours, you need to be a Database Administrator to reference it (and, if this database is ANSI compliant, you need to qualify the name with its owner-name).
SELECT constrname, owner FROM informix.sysconstraints

624 Unable to drop CONSTRAINT constraint-name.

This internal error shows that the database server had an unexpected error while dropping a constraint or the index that implemented it. Check the accompanying ISAM error code for more information. Corruption of the system catalogs or the root dbspace might have occurred, or a hardware problem might exist. If the error recurs, please note all circumstances and contact Informix Technical Support.

625 Constraint name constraint-name already exists.

The constraint name already exists. Review the spelling. If it is as you intended, you must select another name, or drop and redefine the existing constraint. See the discussion of error -623 for a way to list all constraints.

626 Cannot obtain or set serial value.

This internal error message does not refer to a problem with a SERIAL column in a table that you defined. The database server uses unique integer values for many purposes (for example, the table ID number for a new or altered table). An internal error has made it impossible to generate a new, unique number. For example, in host systems that use files for locking, something might have prevented the creation of a lock file. Check the accompanying ISAM error code for more information. If the error recurs, please note all circumstances and contact Informix Technical Support.

627 Cannot prepare coordinator for two-phase commit.

Because the coordinator cannot prepare this INFORMIX-STAR two-phase commit transaction, all participants eventually roll back all work that is associated with the transaction. No administrative intervention is required. See the ISAM error for more information about why the database server could not prepare to commit the local transaction.

628 Cannot end two-phase commit transaction at coordinator.

The database server acting as coordinator for the transaction cannot end this INFORMIX-STAR two-phase commit transaction, and the transaction remains open. Eventually, INFORMIX-STAR automatic recovery mechanics will end the transaction. No administrative intervention is required. See the ISAM error for more information about why the database server could not end the transaction properly.

629 Cannot end heuristically rolled back transaction.

The database server acting as coordinator for the transaction cannot end this INFORMIX-STAR two-phase commit transaction, and the transaction remains open. Eventually, INFORMIX-STAR automatic recovery mechanics will end it. No administrative intervention is required. See the ISAM error for more information about why the database server could not end the transaction properly.

630 Cannot prepare database server server-name for commit.

The specified database server cannot prepare the local transaction associated with this INFORMIX-STAR two-phase commit transaction. Eventually, all participants roll back all work associated with the transaction. No administrative intervention is required. See the ISAM error for more information about why the database server could not prepare to commit the local transaction.

631 Cannot create optical cluster on column that is not TEXT or BYTE.

You can only create optical clusters on columns of TEXT or BYTE data type. The column name is some other type. Check that the column is the one you meant to specify, and review the definition of the table.

632 Cannot create optical cluster.

An attempt to create an optical cluster has failed. See the ISAM error for more information.

633 Cannot drop optical cluster.

An attempt to drop an optical cluster has failed. See the ISAM error for more information.

634 Object does not exist.

You are trying to drop a trigger that does not exist. Check that you are spelling the name of the trigger correctly. Also, you might query the systriggers system catalog table to review the names of triggers in the database.

635 Not owner of object.

You are trying to drop a database object that you do not own. You might query the appropriate system catalog table to see who owns the object. (For example, for a trigger, query the systriggers table.) You probably need to ask the owner of the database object or the database administrator to drop the object.

636 Total size of key fields is too large or there are too many key fields.

You have violated one of the following constraints on the cluster key that is specified in the ON clause of the CREATE OPTICAL CLUSTER statement:

  • The number of columns included in a composite cluster key exceeds 16.
  • The length of a CHARACTER column exceeds 256 bytes.

637 Cannot alter optical cluster.

An attempt to alter the size of an optical cluster has failed. See the ISAM error for more information.

638 Cannot cluster TEXT or BYTE columns on non-optical media.

You can create an optical cluster only on TEXT or BYTE columns that are stored on optical media. Check that you have not specified the name of a TEXT or BYTE column that is stored in a storage space.

639 Cannot cluster TEXT or BYTE columns on different optical families.

All of the TEXT or BYTE columns specified in the FOR clause of the CREATE OPTICAL CLUSTER statement must belong to the same optical family. Check that the columns that are specified for an optical cluster do not belong to different families.

640 QPlan sanity failure line-number.

Running UPDATE STATISTICS might fix this internal error. If the error recurs, please note all circumstances and contact Informix Technical Support.

641 Cannot reserve/release family on non-optical media.

The family name that is specified in the RESERVE or RELEASE statement must exist on optical media. Check that you have not specified a storage space with either of these statements.

642 Family name must be a character string.

The optical family name that is specified in the RESERVE or RELEASE statement must be either a character string, or a host or procedural variable that evaluates to a character string. If you specified a character string, check that you enclosed it in quotes.

643 Volume must be a number.

The volume argument in the RESERVE or RELEASE statements must be INTEGER or SMALLINT.

644 FAMILY(), VOLUME(), and DESCR() require BLOB column on optical medium.

The argument to the FAMILY(), VOLUME(), or DESCR() function must be a TEXT or BYTE column that is stored on optical media. Check that you have not specified a column of a different data type or a TEXT or BYTE column that is stored in a storage space.

645 Cannot reserve volume.

An attempt to reserve an optical volume with the RESERVE statement has failed. See the error from the optical subsystem (an error in the -7000 to -7199 range) for more information.

646 Cannot release volume.

An attempt to release a requested optical volume with the RELEASE statement has failed. See the error from the optical subsystem (an error in the -7000 to -7199 range) for more information.

647 Error evaluating math library function function-name.

The data type of the argument is correct, but the value passed to the function is not appropriate for the math function. Check that you are passing a legitimate value to the function.

648 Cannot open DEBUG file for SPL routine trace.

An error occurred trying to open DEBUG trace file. This error can occur when one of the directories in the specified debug file name does not exist, or the directory is write protected. Check that the directory path is valid and that group informix can write to the directory.

649 The debug file name must be a NON-NULL CHAR or VARCHAR.

The argument that is specified for the debug file in the SET DEBUG statement must be a character data type.

650 Maximum varchar size has been exceeded.

This statement specifies a VARCHAR(m, r) column with a maximum width m greater than allowed (255). Check the punctuation of the column definition. If it is as you intended, redesign the table to use a VARCHAR width that ranges from 1 character to 255 characters.

651 Reserved column size > maximum column size (varchar).

This statement specifies a VARCHAR(m, r) column with a reserved width r that is greater than the maximum width m. Check the punctuation of the column definition. If it is as you intended, revise the statement so that m is greater than or equal to r.

652 Local variables do not allow default values.

An attempt was made to define a local variable with a default value. Only global variables and parameters can have default values.
An example of the error follows:

DEFINE var INT DEFAULT 10;error

The correction is as follows:
DEFINE var INT; LET var = 10;

653 Variables declared as LIKE cannot be global.

A global variable was defined as LIKE. LIKE variables must be local variables.
An example of the error follows:

DEFINE GLOBAL var LIKE tab.col;error

Correction: Do not use the LIKE keyword with global variables. Instead, specify the data type explicitly.

654 Bad use of PROCEDURE declaration type.

The procedure declaration was used either in the parameters or the RETURNING clause. SPL routines cannot accept or return procedures.
An example of the error follows:

CREATE PROCEDURE testproc (proc1 procedure)error RETURNING procedure; — error … END PROCEDURE

Correction: Do not attempt to use the procedure declaration type within a parameter or the RETURNING clause.

655 RETURN value count does not match procedure declaration.

The number of values that a procedure was declared to return in the RETURNING clause does not match the number of values in a RETURN clause.
An example of the error follows:
CREATE PROCEDURE testproc () RETURNING INT, INT; … RETURN 1,2,3; — error … RETURN 1; — error END PROCEDURE
Correction: In this example, return exactly two arguments.

656 Routine is not declared to return values.

When the routine was declared, it did not contain a RETURNING clause to indicate that the routine would not return any value, but then a RETURN statement was found in the body of the routine.
An example of the error follows:
CREATE ROUTINE testproc() DEFINE a INT; LET a = 10; RETURN a + 1; — error END ROUTINE
Correction: Add a RETURNING clause before the DEFINE statement, or remove the RETURN statement.

657 Cannot create a procedure within a procedure.

You cannot have a CREATE PROCEDURE statement within a CREATE PROCEDURE statement.

658 Variables declared as GLOBAL require a default value.

A global variable was not given a default value. Global variables require a default value.
Example of error:

DEFINE GLOBAL glob INT;error

Correction:
DEFINE GLOBAL glob INT DEFAULT 10;

659 INTO TEMP table required for SELECT statement.

A SELECT statement did not specify where to put the returned values. SELECT statements within a procedure require either an INTO TEMP clause or an INTO clause that references the appropriate procedural variables.
Example of error:
CREATE PROCEDURE testproc() … SELECT col1, col2 FROM tab; — error END PROCEDURE
Correction:
CREATE PROCEDURE testproc() … SELECT col1, col2 INTO var1, var2 FROM tab; SELECT col1, col2 FROM tab INTO TEMP another_table; END PROCEDURE

660 Loop variable variable-name cannot be modified.

An attempt was made to modify the value of a loop variable in a FOR statement. Loop variables cannot be modified inside a loop.
Example of error:
FOR i IN (1,2,3,4) LET i = i + 1; — error END FOR
Correction: Use another variable in the LET statement.

661 Number of variables does not match number of values returned.

The number of variables on the left side of a LET statement does not match the number of values on the right side.
Example of error:
LET a,b = 10,20,39; LET i,j = proc1()+proc2(); LET a,b = (SELECT c1 FROM tab)
Correction: Match the number of expressions on both sides of the LET statement.

662 Loop variable variable-name specified more than once.

A loop variable was used more than once in a FOREACH statement.
Example of error:

FOREACH SELECT col1, col2 INTO var, var FROM taberror … END FOREACH

Correction:
FOREACH SELECT col1, col2 INTO var1, var2 FROM tab … END FOREACH

663 You are using more than one procedure-calling syntax for procedure procedure-name.

While calling a procedure, some of the arguments were named, but others were not.
Example of error:

LET var = proc (arg1 = 10, 20, arg3 = 30);error

Correction:
LET var = proc (arg1 = 10, arg2 = 20, arg3 = 30); –correct LET var = proc (10,20,30);–correct

664 Wrong number of arguments to system function function-name.

You have specified an incorrect number of arguments for the function function_name. Check that you are passing the correct number of arguments to the function.

665 Internal error on semantics – code-number.

If this internal error recurs, please note all circumstances and contact Informix Technical Support.

666 Variable variable-name must be declared INTEGER or SMALLINT.

In a FOR statement, loop variables that contain ranges must be declared to be INT or SMALLINT.
Example of error:
DEFINE var CHAR(10); FOR var IN (e1, e2 TO e3, e4) — error … END FOR;
Correction: Because the FOR statement contains a range operator (the TO clause), var must be declared as INT or SMALLINT.

667 Variable variable-name not declared.

The specified variable was not declared. Check the spelling of the undeclared variable to ensure that it is not causing the error.

668 System command cannot be executed.

A system call failed in the operating system. The following example shows a statement that might cause an error:
SYSTEM ‘hello’;
Make sure that the system command is not trying to run something that is not in your path or that is not applicable to the environment.
Make sure that you have provided a user-id and password when connecting to the database server. The database server must have the user’s password in order to execute a command on behalf of that user.
On Windows NT platforms, make sure the following Advanced User Rights have been assigned to user “informix”: Act as part of the operating system; Increase quotas; replace a process level token.

669 Variable variable-name redeclared.

A variable has been declared twice in the same scope. See the Informix Guide to SQL: Tutorial, Chapter 12, for an explanation of the scope of procedural variables.

670 Variable variable-name declared as SERIAL type.

The SERIAL data type is not a legal procedure type. Use the INTEGER data type to match the SQL SERIAL data type.

671 Routine invocation routine-name has duplicate parameter name.

A routine call named a parameter more than once.
Example of error:
LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);– error
Procedure call procedure-name has duplicate parameter name.
A procedure call named a parameter more than once.
Example of error:
LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);– error

672 Invalid data structure execution-tree.

If this internal error recurs, please note all circumstances and contact Informix Technical Support.

673 Routine routine-name already exists in database.

You attempted to create a routine that already exists in the database. If you want to create a new version of the routine, use the DROP ROUTINE statement to drop the routine before you attempt to create the new version of the routine.

674 Routine cannot be resolved.

You called a routine that does not exist in the database, you do not have permission to execute the routine, or you called the routine with too few or too many arguments. If a prepared statement invokes a user-defined routine and your application or another application drops the routine before the prepared statement is executed, you will receive this error.
You might also see this error message if you write an expression that calls an SPL routine (stored procedure) that returns no values. For an SPL routine to be usable in an expression, the routine must return a value.
Check that the name of the routine is correct, that you have execute permission, and that you specified the correct number of arguments to execute a routine. For a prepared statement that refers to the routine, make sure that the routine still exists when you execute the statement.

675 Illegal SQL statement in SPL routine.

An SQL statement that is not allowed in an SPL routine was executed. This error occurs when a routine is called from an SQL data manipulation statement.
Example of error:
CREATE PROCEDURE testproc (arg INT, id INT) RETURNING INT; UPDATE tab SET col = arg WHERE key = id; — error RETURN id; END PROCEDURE;
SELECT col FROM tab WHERE testproc(tab.col, tab.key) = 10;
Do not use statements such as the preceding UPDATE statement in SPL routines.

676 Invalid check constraint column.

A check constraint that is specified at the column level can reference only that column. To specify a check constraint that spans more than one column, specify the check constraint at the table level. You cannot create a check constraint for columns across tables.

677 Check constraint cannot contain subqueries.

A check constraint cannot contain a subquery or a procedure. Subqueries are disallowed in check constraints because they depend on the state of the database. For data integrity, the evaluation of a check constraint must not vary or depend on the state of the database.
Example of error:
CREATE TABLE new_stock ( stock_num SERIAL PRIMARY KEY, unit_price MONEY CHECK (unit_price >= (SELECT unit_price FROM stock WHERE manu_code =HRO)), manu_code CHAR(3));
Verify that your statement does not have a subquery or procedure in a check constraint.

678 Invalid subscript for column column-name in check constraint.

A subscripted column in a check constraint has subscripts outside the bounds of the column. Check that the bounds specified in the subscripted column do not exceed the maximum length of the column. If you know the table name of the column, use the following subquery to query the system-catalog tables to find out the maximum length of the column:
SELECT collength FROM syscolumns WHERE colname = column-name AND tabid = (SELECT tabid FROM systables WHERE tabname = table-name)

679 Cannot read constraint violation data for constraint constraint-name.

See the ISAM error for more information. If this internal error recurs, please note all circumstances and contact Informix Technical Support.

680 Cannot write constraint violation data for constraint constraint-name.

See the ISAM error for more information. If this internal error recurs, please note all circumstances and contact Informix Technical Support.

681 Column specified more than once in the INSERT list.

The error occurs if the user specifies a column name more than once in the INSERT column list.

682 Error reading constraint index on table table-name.

The system was unable to validate the constraint. See the ISAM error for more information. If this internal error recurs, please note all circumstances and contact Informix Technical Support.

683 Specified STEP expression will not traverse RANGE.

The evaluated value of the STEP expression in the FOR statement will lead to an infinite loop.
Example of error:
FOR i = 10 TO 20 STEP -1; — error … END FOR
Correction: Correct either the range or the step expressions so that the incremented values are within the range.

684 Function returns too many values.

The number of returned values from a function is more than the number of values that the caller expects.
Example of error:
CREATE ROUTINE testroutine(arg INT) RETURNING INT, INT; RETURN 1,2; END ROUTINE

SELECT col FROM tab WHERE col = testroutine(1);error

685 Function returns too few values.

The number of returned values from a function is less than the number of values that the caller expects.
Example of error:
CREATE ROUTINE testroutine (arg INT) RETURNING INT, INT; RETURN 1,2; END ROUTINE

UPDATE tab SET (c1, c2, c3) = (testroutine(1));error

686 Function has returned more than one row.

A function returned more than one row of values (for example, it executed RETURN…WITH RESUME) when the caller expected only one row of values.
Example of error:
CREATE FUNCTION testroutine (limit INT) RETURNING INT; DEFINE i INT; FOR i IN (1 TO limit) RETURN i WITH RESUME; END FOR END FUNCTION;
CREATE FUNCTION gettest() RETURNING INT; DEFINE var INT; LET var = testroutine (10); — error RETURN var; END FUNCTION;

687 Set debug file before tracing SPL routines.

A TRACE statement was executed before a SET DEBUG FILE statement. The destination of the output of the TRACE statement is unknown. This error can also apply to the TRACE OFF statement.
Example of error:

TRACE procedure;error

Correction:
SET DEBUG FILE TO ‘trace.out’; TRACE procedure;

688 Variable variable-name must be declared CHAR or VARCHAR.

You declared the variable as a data type other than CHAR or VARCHAR. Correct the declaration, and try again.

689 Global variable variable-name declared inconsistently.

Two or more procedures were executed that defined the same global variable with different data types.
Example of error:
CREATE PROCEDURE test1() DEFINE GLOBAL glob INT DEFAULT 10; … END PROCEDURE
CREATE PROCEDURE test2() DEFINE GLOBAL glob CHAR (9) DEFAULT USER; … END PROCEDURE
Correction: Declare global variables consistently. (Using appropriate naming conventions would be useful.) Two variables of the same data type but different lengths are considered inconsistent.

690 Cannot read keys from referencing table table-name.

The referential constraint could not be validated. See the ISAM error for more information. If you are using cascading deletes, database logging must be on.

691 Missing key in referenced table for referential constraint constraint-name.

A referential constraint has been violated. This condition usually occurs when you are trying to insert a value into or update the value of a column that is part of a referential constraint. The value you are trying to enter does not exist in the referenced (parent-key) column(s). If you are using cascading deletes, database logging must be on.

692 Key value for constraint constraint-name is still being referenced.

You have violated a referential constraint. This situation usually occurs when you are trying to delete a row in a column (parent key) that another row (child key) is referencing. If you are using cascading deletes, database logging must be on.

693 System command expects a non-null value.

A null value was passed to the SYSTEM statement.
Example of error:
DEFINE c CHAR(100); LET c = NULL; … SYSTEM c; — error

694 Too many arguments passed to procedure procedure-name.

More arguments were passed to a procedure than a procedure was declared to accept.

695 Argument is not a parameter of procedure procedure-name.

A named parameter was passed to a procedure, but the named parameter does not exist.
Example of error:
CREATE PROCEDURE testproc (arg1 INT, arg2 INT) RETURNING INT; … RETURN 1; END PROCEDURE

SELECT col FROM tab WHERE testproc (arg1 = 10, arg5 = 20);error

696 Variable variable-name has undefined value.

An SPL variable was referenced or a row field was set before a value was assigned.
Example of error:
DEFINE my_row_var1 (last_name CHAR(20), id INTEGER); DEFINE i, j INT;

LET i = j + 1;error LET my_row_var1.id = new_id; — error

While
LET my_row_var1 = ROW(NULL::CHAR(20), NULL::INTEGER)::person_rt; LET my_row_var1.id = new_id; — success
Correction: Assign all variables and parameters valid values before you use them.
Row type variables are allowed in SPL routines. Such variables must be initialized before they are used. To initialize a row type variable, you must initialize the entire variable. Initializing each field will not substitute for initializing the entire variable, and in fact you cannot initialize the individual fields until after you have initialized the entire variable. The following example shows correct and incorrect initialization of row type variables in SPL.
— Example showing that row type variables in SPL must have the entire variable initialized. It is not sufficient to initialize the fields — without initializing the entire variable.CREATE DATABASE tango;
drop table table1; drop row type person_rt restrict; drop function create_person_rt;
CREATE ROW TYPE person_rt (last_name CHAR(20), id INTEGER);
CREATE FUNCTION create_person_rt(new_name CHAR(20), new_id INTEGER) RETURNING person_rt; DEFINE my_row_var1 person_rt; — You cannot initialize the individual fields of the variable until you — have initialized the entire variable. If the following statement were — executed at this point, it would fail with error -696. — LET my_row_var1.id = new_id; — Initialize the entire variable. LET my_row_var1 = ROW(NULL::CHAR(20), NULL::INTEGER)::person_rt; — Now set the individual fields. LET my_row_var1.id = new_id; LET my_row_var1.last_name = new_name; RETURN my_row_var1; END FUNCTION;
— Sample usage:
CREATE TABLE table1 (person_column person_rt); INSERT INTO table1 (person_column) VALUES (create_person_rt(Uhuru, 128));
CLOSE DATABASE;
You must initialize the entire variable because the engine can track whether or not the entire variable has been initialized but cannot track initialization on a field-by-field basis.

697 STEP expression evaluated to ZERO.

The STEP expression of a FOR statement evaluated to zero.
Example of error:
LET e = -1; FOR i = 10 TO 20 STEP e+1; — error … END FOR
Correction: Change the STEP expression so that it evaluates to a nonzero value.

698 Inconsistent transaction. Number and names of servers rolled back – servers.

This message is returned if an INFORMIX-STAR two-phase commit or a distributed transaction is implemented with a mixed result. That is, some database servers participating in the transaction rolled back their parts of the global transaction, but other database servers committed their parts of the global transaction. The number of database servers that rolled back work is always accurate, but the list of server names (specified by DBSERVERNAME values) can be incomplete. If a large number of servers rolled back work, the list might be truncated to save space. Refer to the message log of the coordinator database server for a complete list of server names. If this error message is returned, you must determine whether your networked database system is in an inconsistent state. This procedure is described in detail in your Administrator’s Guide.

699 Transaction heuristically rolled back.

This message is returned if all participating database servers heuristically roll back an INFORMIX-STAR two-phase commit transaction. Because all database servers rolled back the transaction, the networked database system remains consistent.

Related articles