CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;OPEN cur1;
OPEN cur2;REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;CLOSE cur1;
CLOSE cur2;
END
Data truncated for column 'b' at row
这个是例子上的,怎么报数据被截断啊
我把上面的变量名改了,它又报数据太长
ERROR 1406 (22001): Data too long for column 'b' at row 5FETCH cur1 INTO a, b;
问题大概是出在这一行
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;OPEN cur1;
OPEN cur2;REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;CLOSE cur1;
CLOSE cur2;
END
Data truncated for column 'b' at row
这个是例子上的,怎么报数据被截断啊
我把上面的变量名改了,它又报数据太长
ERROR 1406 (22001): Data too long for column 'b' at row 5FETCH cur1 INTO a, b;
问题大概是出在这一行
`ID` int(11) NOT NULL default '0',
`DATA` binary(255) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Table "t2" DDLCREATE TABLE `t2` (
`i` int(11) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Table "t3" DDLCREATE TABLE `t3` (
`p1` char(16) default NULL,
`p2` int(11) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
你的b是一个INT型。desc test.t1 ;贴一下结果。
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| ID | int(11) | NO | PRI | 0 | |
| DATA | binary(255) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+