一个过程在调用者期待只返回一行值的时候,返回了超过一行的值。(例如,它执行 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
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