-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(tab.col, tab.key) = 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        过程<过程名>返回超过一行的值。
一个过程在调用者期待只返回一行值的时候,返回了超过一行的值。(例如,它执行 RETURN... 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.out'; 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错误以得到更多的信息。如果使用级连的删除,数据库 日志必须打开。
(本文已被浏览 2132 次)
|
|