MySQL CURSOR 中文
EMPLOYEE.NAME 这个字段是如何定义的?
另外 EMPLOYEE 这个表的建表SQL是什么?
出现这种问题通常都是因为字符集的缘故导致的
回答:我的数据库已经改为UTF8,而且可以正常的添加和删除。
定义:
//
//NAME
//STRING
//
//varchar(80)
//
//
//
//姓名*
// Employee Name
//姓名*
//
//Employee Name
//
我有一个关于游标的问题,请帮帮忙!
1.我有一张表名为EMPLOYEE,还有另外一张表名为DEPARTMENT。
2.当发生一个操作时,需要把EMPLOYEE表中三个字段EMPLOYEE.OID,EMPLOYEE.EMPLOYEE_ID,EMPLOYEE.NAME用游标取出,然后一条一条插到另外得一张表中。
3.这个游标放在一个触发器中,在触发器启动的时候会发生报错。
我认为是:由于EMPLOYEE.NAME字段存的是中文,所以在将它赋值给一个变量_name的时候报错“Data to long for _name”。
(PS:我试过其他的字段,数字和字符串都没有问题。)
程序如下:
BEGIN
DECLARE _oid INT;
DECLARE _id VARCHAR(80);
DECLARE _name VARCHAR(80);
DECLARE _company INT;
DECLARE num VARCHAR(80);
DECLARE reqid VARCHAR(80);
DECLARE _reqid VARCHAR(80);
DECLARE done INT DEFAULT 0;
DECLARE cur1 CURSOR FOR select EMPLOYEE.OID,EMPLOYEE.EMPLOYEE_ID,EMPLOYEE.NAME
from EMPLOYEE
where EMPLOYEE.DEPARTMENT =NEW.DEPARTMENT_OID;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
REPEAT
FETCH cur1 into _oid,_id,_name
//好像事在这儿,当把EMPLOYEE.NAME赋值给_name 的时候
UNTIL done END REPEAT;
CLOSE cur1;
END
yejr
周六, 2006/12/23 - 19:32
Permalink
好像在别的地方看到
好像在别的地方看到有人问跟你一样的问题,应该也是你吧.
还是那句话,应该是字符集的问题导致的,先把要写入的数据字符集以及对应表的字符集都统一了.
MySQL 中文网: http://imysql.cn
Google MySQL 中文用户群:http://groups.google.com/group/imysql
给你的祝福,要让你招架不住!
sxryan1
周一, 2006/12/25 - 09:34
Permalink
我给你发了封email。
我给你发了封email。
yejr
周一, 2006/12/25 - 17:53
Permalink
sorry,没收到. MySQL中文
sorry,没收到.
MySQL中文网: http://imysql.cn
Google MySQL中文用户群:http://groups.google.com/group/imysql
给你的祝福,要让你招架不住!
sxryan
周六, 2006/12/30 - 11:31
Permalink
它的字符集分:client
它的字符集分:client and server.
CLIENT SECTION
[client]
port=3306
[mysql]
default-character-set=utf8
SERVER SECTION
[mysqld]
port=3306
default-character-set=utf8
以前只改了client,没有改server。
yejr
周六, 2006/12/30 - 17:27
Permalink
呵呵,最重要的当然
呵呵,最重要的当然是server端了,client端可以随时改变,server端的有的不是运行时可改变的。
MySQL中文网: http://imysql.cn
Google MySQL中文用户群:http://groups.google.com/group/imysql
给你的祝福,要让你招架不住!