2024年1月17日发(作者:)

605 不能写 blob。

本语句写一个BYTE或TEXT值,但某些意外的错误阻止了值的建立。滚回当前的事务,

检查相应的 ISAM 出错码以得到更多的信息; 可能有硬件错误或者 blobspace

或tblspace的数据有损坏。一个可能的原因是这一字段的blobspace 是满的。另一

个可能是虽然一个新块已分配给blobspace,但是直到另外的块已被记录并且日志文

件已被关闭以后才分配到页面。OnLine管理员可以使用tbmode -l 或onmode -l

命令强制关闭日志文件。如果错误再次发生,则请记录所有的情况并和Informix

技术支持部联系。

-606 无效的 blob 空间名字。

如果本语句涉及一个blobspace(例如CREATE TABLE 语句可以建立具有类型 TEXT

IN ;的字段),但名字无效或不存在。重新审查打算作为blobspace

名字的标识符,如果拼法正确,则咨询OnLine管理员以确定它们是否存在并联机。

如果语句不涉及blobspace,则此时是一个内部错误。如果错误再次发生,则请记录

所有的情况并和Informix技术支持部联系。

-607 Text/Byte 下标错。

本语句涉及使用子字符串符号的 TEXT 或 BYTE 值(名字后跟带方括号的数字)。但

子字符串未写正确。重新审查子字符串的所有用法,确认第一个数字大于零并且不大

于值的长度;第二个数字不小于第一个数字;数字间有逗号分开。

-608 不合法的企图转换 Text/Byte blob 类型。

本语句包含从 TEXT 或 BYTE 值到另外的数据类型的转换。例如,在表达式中把它与

其它类型进行组合或将其插入到另外类型的字段中。这是不支持的;TEXT 和BYTE

字段只可以被选择或被拷贝到同一类型的其它字段。重新对语句进行审查以确认语句

命名的字段是想要的字段,并且数据类型也是所需的类型。

-609 不合法的使用Text/Byte主机变量的企图。

本语句使用一个TEXT或BYTE定位器结构的主机变量,但使用某些其它类型的数据进行

组合(例如在表达式中或将其插入到另一类型的字段中)这是不支持的。这些类型的

主机变量只可以用于选择、建立、或插入同一类型的字段。

-610 索引在blob字段不允许。

这个CREATE INDEX语句命名一个TEXT或BYTE类型的字段;但这些类型是不支持索引

的。原因是没有在这些类型中定义词汇次序,所以数据库服务器不知道如何排序或比

较它们;因而它不能建立一个翻转的索引。可能你对数据有足够的理解,知道如何从

中抽出一个关键值的集合的次序;如果是这样,在同一个表中抽出一个独立的字段并

索引那个字段。

-611 滚动游标不能选定blob字段。

在这个语句中命名的游标与一个返回一个或多个TEXT或BYTE字段的SELECT语句有联

系;同时这个游标和SCROLL关键字一起说明。这是不支持的。原因是通过一个滚动游

标取得的行也是存贮在临时表中的。因为TEXT和BYTE值的大小,这将产生一个不能接

受的时间和磁盘空间的花费。修改游标的说明以选定其它类型的想要的字段,同时

ROWID也进行同样处理。在通过滚动游标取得一行后,使用独立的,非滚动的游标取

得BYTE或TEXT值,WHERE ROWID=<主机变量>;。

-612 Blob在"group by"子句中是不允许的。

这个SELECT语句选定一个或多个BYTE或TEXT值,并且也在GROUP BY子句中指定了那些

字段。这是不支持的。因为没有对BYTE或TEXT值指定词汇次序,数据库服器不能对它

们排序或比较。所以不能在它们的值上对行分组。(这即使在从一个BYTE或TEXT

字段中选定子串时也是对的)。检查SELECT语句以确定在ORDER BY子句中命名了正确的

字段。

-613 Blob不允许在"distinct"子句中。

这个语句指定了DISTINCT值,但它也选定了一个BYTE或TEXT值。数据库服务器不知道

如何比较这些值或认定它们的次序。因此不能给它们排序,也不能定位重复的值。

因而当选定这些数据类型时不能使用DISTINCT关键字。回顾SELECT语句以移去

关键字或只选定普通字段。

-614 Blob不允许在"order by"子句中。

这个SELECT语句选定一个或多个BYTE或TEXT值,并且也在ORDER BY子句中指定了那些

字段。这是不支持的。因为没有对BYTE或TEXT值指定词汇次序,数据库服务器不能将

它们排序(这即使在从一个BYTE或TEXT字段中选定子串时也是对的)。回顾SELECT

语句以确定在ORDER BY子句中命名了正确的字段。

-615 Blob在这个表达式中是不允许的。

这个语句使用了一个如COUNT,SUM,MIN,MAX,或AVG的统计表达式,但将它应用到了

一个BYTE或TEXT数据类型的字段。这是不支持的。回顾函数的使用并确定它们只在简

单字段上应用。

-616 一个blob下标在这个上下文中不允许。

这个UPDATE或INSERT语句指定了一个BYTE或TEXT类型的下标字段作为目标。下标注释

在这个上下文中是不允许的;一个BYTE或TEXT(或任何其它)值必须被完全的替换。

修改语句以给整个字段赋值。

-617 一个blob数据类型必须在这个上下文中指定。

这个语句为一个BLOB(BYTE或TEXT)字段赋一个非BLOB值,或将一个BLOB字段赋给一个

非BLOB字段。二者都是不支持的。BYTE和TEXT值必须被作为整个单元赋给同一类型的

字段。回顾语句确定指定了所要的字段。

-618 拷贝blob数据出错。

这个语句从一行到另一行拷贝一个BYTE或TEXT值,但一些意外的错误干扰了这一操

作。滚回当前的事务。检查相应的ISAM错误的代码以得到更多的信息。可能是一个硬

件错误,或blobspace或tblspace上的数据损坏,或缺少磁盘空间,或一个非法的

blobspace名。如果这个错误又发生,请记录全部的环境并和Informix 技术支持部联

系。

-619 一个blob错误发生在前端应用程序。

这个语句在数据库和用户程序之间传递一个BYTE或TEXT,但有一些事情阻止它。例

如,不能在内存中为一个值分配一个缓冲区。检查相应的ISAM错误的代码以得到更多

的信息。

-620 不能更新下一个范围的大小。

这个内部错误指示数据库服务器不能改变一个存储在根dbspace上的内部数据结构(不

是一个系统目录)。检查相应的ISAM错误的代码以得到更多的信息。可能是根dbspace

损坏。请OnLine管理员运行tbcheck或oncheck工具。

-621 不能更新新的锁定级。

这个内部错误指示数据库服务器不能将一个锁定从共享转换为独占。检查相应的ISAM

错误代码以得到更多的信息。可能是一个硬件问题或一个共享内存的问题。如果这个

错误再次发生,请记录全部的环境并联系Informix 技术支持部。

-622 定位约束索引<索引名>;错误。

这个内部错误显示数据库服务器正试图在UNIQUE或PRIMARY KEY约束下为唯一性测试

一个新的或更新的行,但实现约束的索引找不到。检查相应的ISAM错误代码以得到更

多的信息。可能是系统目录或根dbspace损坏,或一个硬件问题。如果这个错误再次

发生,请记录全部的环境并和Informix 技术支持部联系。

-623 不能发现CONSTRAINT<约束名>;。

在这个语句中指定的约束不能找到。检查所示名称的拼写。如果它是所愿的,通过查

询系统约束表检查存在名称的约束如以下的实例所示。如果想要的约束的所有者名称

显示不是你的,你需要成为一个数据库管理员以参考它(并且,如果这个数据库是ANSI

兼容的,你需要使用所有者名来限制它)。

SELECT constrname,owner FROM straints

-624 不能终止CONSTRAINT<约束名>;。

这个内部错误显示数据库服务器在取消一个约束或实现该约束的索引时有一个意外的

错误。检查相应的ISAM错误代码以得到更多的信息。可能是系统目录或根dbspace损

坏,或一个硬件问题。如果这个错误再次发生,请记录全部的环境并和Informix 技

术支持部联系。

-625 约束名称<约束名>;已经存在。

所示的约束名称已经存在。检查它的拼写;如果正是所希望的,则必须选定一个其它

的名称,或取消并重新定义存在的约束。参照错误-623的讨论以得到一个列出全部约

束的办法。

-626 不能得到或设置系列值

这个内部错误信息不代表定义在一个表中的一个SERIAL字段有问题。数据库服务器由

于很多原因使用唯一的整型值(例如一个新的或变更的表的id数值)一个内部错误使

得无法生成一个新的、唯一的数;例如,在使用文件实现锁定的主机系统中,一些事

情阻止产生一个锁定文件。检查相应的ISAM错误代码以得到更多的信息。如果这个错

误再次发生,请记录全部的环境并和Informix 技术支持部联系。

-627 不能为两阶段提交准备协调者。

由于协调者不能准备这个INFORMIX-STAR两阶段提交事务,所有参与者最后滚回全部和

此事务关联的工作。不需要管理的干预。参照ISAM错误以得到更多的关于为什么数据

库服务器不能准备提交本地事务的信息。

-628 不能在协调者结束两阶段提交事务。

OnLine数据库服务器的协调者不能结束这个INFORMIX-STAR两阶段提交事务并且事务依

然打开。最后,INFORMIX-STAR自动恢复机制将结束这个事务。不要求管理的干预。参

照ISAM错误以得到更多的关于为什么数据库服务器不能合适地结束事务的信息。

-629 不能结束启发式滚回事务。

OnLine数据库服务器的协调者不能结束这个INFORMIX-STAR两阶段提交事务并且事务依

然打开。最后,INFORMIX-STAR自动恢复机制将结束它。没有要求管理的干预。参照

ISAM错误以得到更多的关于为什么数据库服务器不能合适的结束事务的信息。

-630 不能为提交准备数据库服务器<服务器名>;。

指定的OnLine数据库服务器不能准备与这个INFORMIX-STAR两个阶段提交事务相关的本

地事务。最后,所有的采用者滚回全部和事务相关的工作。不要求管理的干预。参照

ISAM错误以得到更多的关于为什么数据库服务器不能准备提交本地事务的信息。

-631 不能在非blob字段<字段名>;上建立光盘聚类。

只能在TEXT或BYTE类型的字段上建立光盘聚类。所示的字段名是一些其它的类型。确

定字段是你要指定的那一个,并检查表的定义。

-632 不能建立光盘聚类。

试图建立一个光盘聚类失败。参照ISAM错误以得到更多的信息。

-633 不能取消光盘聚类。

试图取消一个光盘聚类失败。参照ISAM错误以得到更多的信息。

-634 对象不存在。

试图取消一个不存在的触发器。检查触发器名称的拼写。同时,可以查询systriggers

系统目录表以回顾数据库中的触发器的名称。

-635 不是对象的拥有者。

试图取消一个不属于你的触发器。可以查询systriggers系统目录表以得知谁拥有这个

触发器。可能需要向这个触发器的拥有者或DBA申请取消这个触发器。

-636 键域的大小太大或有太多的键域。

违反了下列有关聚类键约束之一,这些键在CREATE OPTICAL CLUSTER语句的ON子句

中指定。

* 包含在一个组合聚类键中的字段数超越16。

* 一个CHARACTER字段的长度超越256字节。

-637 不能变更光盘聚类。

试图变更一个光盘聚类的大小失败。参照ISAM错误以得到更多的信息。

-638 不能在非光盘媒体中聚类blob字段。

只能在存储在光盘媒体上的TEXT或BYTE字段上建立一个的光盘聚类。检查以确定没有

指定存储在dbspace 或 blobspace 上的blob字段的名称。

-639 不能在不同的光盘家族上聚类blob字段。

在CREATE OPTICAL CLUSTER语句的FOR子句中指定的全部blob字段必须属于相同的光盘

家族。检查以确定为一个光盘聚类指定的字段不属于不同的家族。

-640 Qplan稳定失败<行号>;。

运行UPDATE STATISTICS可能会修正这个错误。如果这个错误再次发生,请记录全部的

环境并和Informix 技术支持部联系。

-641 不能在非光盘媒体上保留/发布家族。

在RESERVE或RELEASE语句中指定的家族名必须在光盘媒体上存在。检查以确定没有用

这些语句中的任何一个指定一个dbspace或blobspace。

-642 家族名必须是一个字符串。

在RESERVE或RELEASE语句中指定的光盘家族名必须是一个字符串,或一个主机或估计

为一个字符串的过程变量。如果已经指定了一个字符串,确定已将它用引号引起来。

-643 卷必须是一个数。

在RESERVE或RELEASE语句中的卷参数必须是一个INTERGER或SMALLINT。

-644 FAMILY(),VOLUME(),和DESCR()要求在光盘媒介上的BLOB字段。

FAMILY(),VOLUME(),或DESCR()函数的参数必须是一个存储在光盘媒介体上的TEXT

或BYTE字段。检查你并未指定一个不同数据类型的一个字段,或存储在一个dbspace

或blobspace的一个blob字段。

-645 不能保留卷。

试图保留一个带有RESERVE语句的要求光盘卷失败。参照从光盘子系统来的错误(一个

在-7000到-7199范围内的错误) 以得到更多的信息。

-646 不能发布卷。

试图发布一个带有RELEASE语句的要求光盘卷失败。参照从光盘子系统来的错误(一个

在-7000到-7199范围内的错误) 以得到更多的信息。

-647 计算数学库函数<函数名>;错误。

参数的数据类型是正确的,但是传递给函数的值对数学函数是不恰当的。检查确定传

递了一个合法的值给函数。

-648 不能为存储过程跟踪打开DEBUG文件。

试图打开DEBUG跟踪文件时发生一个错误。这个错误可能发生在指定的调试文件名中一

个目录不存在或目录是写保护时。确定那个目录路径是合法的并且informix组是能够

写那个目录的。

-649 调试文件名必须是一个NON-NULL CHAR或VARCHAR。

在SET DEBUG语句中为调试文件指定的参数必须是一个字符数据类型。

-650 最大的varchar大小已经被超越。

这个语句指示一个VARCHAR(m,r)字段带有的最大宽度m大于允许的值(255)。检查字段

定义的标点。如果它是所要的,使用一个宽度范围在1个字符到255个字符的VARCHAR

重新设计表。

-651 保留的字段大小>;最大字段大小(varchar)。

这个语句指定了一个VARCHAR(m, r)带有一个大于最大宽度m的保留宽度r。检查字段定

义的标点。如果它是所要的,修改那个语句使得m >;= r。

-652 局部变量不允许缺省值。

试图用一个缺省值定义一个局部变量。只有全局变量和参数能有缺省值。

下面是一个错误的例子:

DEFINE var INT DEFAULT 10; -- 错误

更正如下:

DEFINE var INT; LET var = 10;

-653 声明为LIKE的变量不能是全局的。

一个全局变量定义为LIKE。LIKE变量必须是局部变量。

下面是一个错误的例子:

DEFINE GLOBAL var LIKE ; -- 错误

更正:不要对全局变量使用LIKE关键字。换句话说,显式地指定数据类型。

-654 错误使用PROCEDURE声明类型。

过程声明用在参数或RETURNING子句中。存储过程不能接受或返回过程。

下面是一个错误的例子:

CREATE PROCEDURE testproc (proc1 procedure) -- 错误 RETURNING

procedure; -- 错误

...

END PROCEDURE

更正:不要试图在一个参数或RETURNING子句中使用过程说明。

-655 RETURN值计数与过程说明不匹配。

一个过程在RETURNING子句中声明的返回值的个数与在一个RETURN子句中的值的个数

不匹配。

下面是一个错误的例子:

CREATE PROCEDURE testproc () RETURNING INT, INT;

...

RETURN 1,2,3; -- 错误

...

RETURN 1; -- error END PROCEDURE

更正:在这个实例中,严格地返回两个参数。

-656 过程没有说明为有返回值。

当过程说明时,它没有包含一个RETURNING子句指定这个过程将有任何返回值,但随后

一个RETURN语句在过程体中被发现。

下面是一个错误的例子:

CREATE PROCEDURE testproc() DEFINE a INT; LET a = 10; RETURN a + 1; --

错误 END PROCEDURE

更正:在DEFINE前增加一个RETURNING子句或移去RETURN语句。

-657 不能在过程内建立过程。

不能在一个CREATE PROCEDURE语句中有CREATE PROCEDURE语句。

-658 说明成GLOBAL的变量要求一个缺省值。

一个全局变量没有给缺省值。全局变量要求一个缺省值。

错误的例子:

DEFINE GLOBAL glob INT; -- 错误。

更正:

DEFINE GLOBAL glob INT DEFAULT 10;

-659 SELECT语句要求INTO TEMP表。

一个SELECT语句没有指定在哪里放返回值。一个过程中的SELECT语句要求一个INTO

TEMP子句或一个引用适当过程变量的INTO子句。

错误的例子:

CREATE PROCEDURE testproc()

...

SELECT col1, col2 FROM tab; -- 错误END PROCEDURE

更正:

CREATE PROCEDURE testproc()

...

SELECT col1, col2 INTO var1, var2 FROM tab; SELECT col1, col2

FROM tab INTO TEMP another_table; END PROCEDURE

-660 循环变量<变量名>;不能被修改。

试图修改一个FOR 语句中的循环变量。循环变量不能在循环内部被修改。

错误的例子:

FOR i IN (1,2,3,4) LET i = i + 1; -- 错误END FOR

更正:在LET语句中使用另一个变量。

-661 变量数和返回值数不匹配。

一个LET语句左边的变量的个数和右边的值数不匹配。

错误的例子:

LET a,b = 10,20,39; LET i,j = proc1()+proc2(); LET a,b = (SELECT c1

FROM tab)

更正:匹配LET语句两边表达式的个数。

-662 指定的循环变量<变量名>;超过一个。

在一个FOREACH语句中使用一个循环变量超过一次。

错误的例子:

FOREACH SELECT col1, col2 INTO var, var FROM tab -- 错误

...

END FOREACH

更正:

FOREACH SELECT col1, col2 INTO var1, var2 FROM tab

...

END FOREACH

-663 对过程<过程名>;使用了多于一次的过程调用句法。

调用一个过程时,一些参数命名了而其它的没命名。

错误的例子:

LET var = proc (arg1 = 10, 20, arg3 = 30); -- 错误

更正:

LET var = proc (arg1 = 10, arg2 = 20, arg3 = 30); --正确LET var =

proc (10,20,30);--正确

-664 系统函数<函数名>;的参数个数错误。

对一个函数指定了一个非法的参数个数。检查对函数传递了正确的参数个数。

-665 语意上的内部错误-<代码号>;。

如果这个内部错误再次发生,请记录全部的环境并和Informix 技术支持部联系。

-666 变量<变量名>;必须被说明为INTEGER或SMALLINT。

在一个FOR语句中,包含范围的循环变量必须被说明为INT或SMALLINT。

错误的例子:

DEFINE var CHAR(10); FOR var IN (e1, e2 TO e3, e4) -- 错误

...

END FOR;

更正:因为FOR语句包含一个范围操作符(TO子句),"var"必须被说明为INT或

SMALLINT。

-667 变量<变量名>;没有被说明。

指定的变量没有说明。检查未定义变量的拼写以确定其不导致错误。

-668 系统命令不能被执行。

一个系统调用在操作系统中失败。下面的语句显示一个可能导致一个错误的例子。

SYSTEM `hello';

-669 变量<变量名>;重复说明。

一个变量在同一个作用域中被说明两次。参照Informix Guide to SQL: -Tutorial,

第12章,过程变量的作用域的一个解释。

-670 变量<变量名>;说明为SERIAL类型。

SERIAL类型不是一个合法的过程类型。使用整数类型去匹配SQL SERIAL类型。

-671 过程调用<过程名>;有重复的参数名。

一个过程调用命名同一个参数不止一次。

错误的例子:

LET var = proc (arg1 = 10, arg2 = 20, arg1 = 30);-- 错误

-672 无效的数据结构<执行树>;。

如果这个内部错误再次发生,请记录全部的环境并和Informix

技术支持部联系。

-673 过程<过程名>;已经在数据库中存在。

试图建立一个已经在数据库中存在的过程。如果你想建立过程的一个新版本,在试图

建立过程的新版本前使用DROP PORCEDURE语句取消这个过程。

-674 过程<过程名>;没找到。

一个被调用的过程在数据库中不存在。如果你准备了一个EXECUTE PROCEDURE语句,然

后过程被你的应用或一个其它的应用在你执行准备的语句前终止,会收到这个错误。

-675 不合法的SQL语句在存储过程中。

在一个过程中运行一个禁止的语句。这个错误发生在一个过程被一个SQL数据管理语句

调用时。

错误的例子:

CREATE PROCEDURE testproc (arg INT, id INT) RETURNING INT; UPDATE tab

SET col = arg WHERE key = id; -- 错误 RETURN id; END

PROCEDURE;

SELECT col FROM tab WHERE testproc(, ) = 10;

更正:不要使用一个限制的语句(诸如前面的UPDATE语句)。

-676 无效的检查约束字段。

一个在字段级指定的检查约束只能参考那个字段。要指定一个跨越多于一个字段的检

查约束,在表级指定检查约束。不能为字段建立一个穿越表的约束。

-677 检查约束不能包含子查询或过程。

一个检查约束不能有子查询或过程调用。

-678 在检查约束中无效的字段<字段名>;下标。

在一个检查约束中一个带下标的字段的下标超出字段的边界。检查字段的最大长度不

要超越带下标的字段指定的边界。如果知道字段的表名,可以使用以下的子查询查询

系统目录表以找出字段的最大长度。

SELECT collength FROM syscolumns WHERE colname =

`column-name'

AND tabid =

(SELECT tabid FROM systables WHERE tabname =

`table-name')

-679 不能对约束<约束名>;读违背约束的数据。

参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,请记录全部的环境并

和Informix 技术支持部联系。

-680 不能对约束<约束名>;写违背约束的数据。

参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,请记录全部的环境并

和Informix 技术支持部联系。

-681 在INSERT列表中字段不止一次被指定。

这个错误当用户在INSERT字段列表中指定一个字段名超过一次时发生。

-682 在表<表名>;中读取约束索引错误。

系统不能验证约束。参照ISAM错误以得到更多的信息。如果这个内部错误再次发生,

请记录全部的环境并和Informix技术支持部联系。

-683 指定的STEP表达式将不通过RANGE。

在FOR语句中的STEP表达式的计算值将导致一个无穷的循环。

错误的例子:

FOR i = 10 TO 20 STEP -1; -- 错误 ...

END FOR

更正:更正范围或步长表达式以使增加的值在范围之内。

-684 过程<过程名>;返回太多的值。

从一个过程返回的值的个数多于调用者期待的值的个数。

错误的例子:

CREATE PROCEDURE testproc (arg INT)

RETURNING INT, INT;

RETURN 1,2;

END PROCEDURE

SELECT col FROM tab WHERE col = testproc(1); -- 错误

-685 过程<过程名>;返回太少的值。

从一个过程返回的值的个数少于调用者期待的值的个数。

错误的例子:

CREATE PROCEDURE testproc (arg INT)

RETURNING INT, INT;

RETURN 1,2;

END PROCEDURE

UPDATE tab SET (c1, c2, c3) = (testproc(1)); -- 错误

-686 过程<过程名>;返回超过一行的值。

一个过程在调用者期待只返回一行值的时候,返回了超过一行的值。(例如,它执行

WITH RESUME)

错误的例子:

CREATE PROCEDURE testproc (limit INT)

RETURNING INT;

DEFINE i INT;

FOR i IN (1 TO limit)

RETURN i WITH RESUME;

END FOR

END PROCEDURE;

CREATE PROCEDURE gettest()

DEFINE var INT;

LET var = testproc (10); -- 错误END PROCEDURE

-687 在跟踪存储过程前设置调试文件。

一个TRACE语句(除了TRACE OFF)在一个SET DEBUG FILE语句前执行。不知道TRACE

语句的输出到何处。

错误的例子:

TRACE procedure; -- 错误

更正:

SET DEBUG FILE TO `';

TRACE procedure;

-688 变量<变量名>;必须被说明为CHAR或VARCHAR。

说明了CHAR或VARCHAR数据类型以外的变量。更正说明并重试。

-689 全局变量<变量名>;说明不合理。

两个或更多的执行着的过程定义了不同数据类型的同一个全局变量。

错误的例子:

CREATE PROCEDURE test1()

DEFINE GLOBAL glob INT DEFAULT 10;

...

END PROCEDURE

CREATE PROCEDURE test2()

DEFINE GLOBAL glob CHAR (9) DEFAULT USER;

...

END PROCEDURE

更正:一致地说明全局变量。(使用合适的命名约定将是有用的。)同一数据类型但

不同长度的两个变量被认为是不一致的。

-690 不能从参考表<表名>;中读取码。

指示约束不能生效。参照ISAM错误以得到更多的信息。如果使用级连的删除,数据库

日志必须打开。

-691 在参照约束<约束名>;的参照表中遗漏键。

一个参照约束被违反。这种情况常常发生在试图将值插入到一个是某个参照约束的一

部分的字段中,或修改这样的字段的值时发生。试图键入的值在参照的(父键)字段

中不存在。如果使用级连的删除,数据库日志必须打开。

-692 约束<约束名>;的键值仍然被参照。

违反了一个参照约束。这种情况常常在试图删除正被另一行(子键)参照着的一个字

段中的一行(父键)时发生。如果使用级连的删除,数据库日志必须打开。

-693 系统命令期待一个非null值。

一个null值被传递给SYSTEM语句。

错误的例子:

DEFINE c CHAR(100);

LET c = NULL;

...

SYSTEM c; -- 错误

-694 太多的参数传递给过程<过程名>;。

传递给过程的参数比过程说明接受的参数多。

-695 参数不是过程<过程名>;的一个参数。

一个命名的参数被传递给一个过程,但那个命名的参数不存在。

错误的例子:

CREATE PROCEDURE testproc (arg1 INT, arg2 INT)

RETURNING INT;

...

RETURN 1; END PROCEDURE SELECT col FROM tab WHERE testproc

(arg1 = 10, arg5 = 20); --错误

-696 变量<变量名>;有未定义的值。

一个变量被使用但从未赋一个值。

错误的例子:

DEFINE i, j INT;

LET i = j + 1; -- 错误

更正:在使用各个变量和参数之前赋予它们一个合法的值。

-697 STEP表达式求值得ZERO。

一个FOR语句的STEP表达式计算得零。

错误的例子:

LET e = -1;

FOR i = 10 TO 20 STEP e+1; -- 错误

...

END FOR

更正:改变STEP表达式使得它计算出一个非零的值。

-698 不一致的事务。服务器的数和名称滚回<服务器>;。

如果有INFORMIX-STAR两阶段提交或分布式事务以混合结果实现时,则返回该信息。这

就是说,一些参与该事务的OnLine数据库服务器滚回了整个事务中它们那个部分,但

另外一些数据库服务器则提交了整个事务中它们那部分。滚回工作的数据库服务器的

数目总是精确的但服务器名称的列表(被DBSERVERNAME值指定的)可能是不完整的。

如果大量的服务器滚回工作,列表可能被截断到保存空间。参考协调者OnLine

信息日志以得到服务器名称的完整列表。如果这个信息返回,你必须决定是否你的网

络数据库系统处在一个不一致的状态。这个过程的详细描述在INFORMIX--OnLine

Administrator's Guide中(或,对版本6.0或更高,在INFORMIX--OnLine Dynamic

Server Administrator's Guide 中)。

-699 事务启发式地滚回。

如果一个INFORMIX-STAR 两阶段提交事务被所有参与的OnLine数据库服务器启发式地

滚回,将返回这个信息。因为全部数据库服务器滚回了这个事务,网络上的数据库系

统依然是一致的。

-700 在一个全局事务中语句是无效的。

当用户试图在一个全局事务中执行一个BEGIN WORK,COMMIT WORK, 或ROLLBACK WORK

语句时产生该错误。