Stored procedures MySQL错误1406和错误1265-不同的行为
我有一个表emp,它的job列定义为varchar(9) 当我在MySQL workbench中使用以下语句时,引发的错误是1406-数据太长 更新emp set job='thisverylongname',其中empno=7788 但是,当我在MySQL过程中使用相同的语句时,该过程不会出现此错误,相反,我必须将错误号更改为1265-数据截断 程序代码为Stored procedures MySQL错误1406和错误1265-不同的行为,stored-procedures,Stored Procedures,我有一个表emp,它的job列定义为varchar(9) 当我在MySQL workbench中使用以下语句时,引发的错误是1406-数据太长 更新emp set job='thisverylongname',其中empno=7788 但是,当我在MySQL过程中使用相同的语句时,该过程不会出现此错误,相反,我必须将错误号更改为1265-数据截断 程序代码为 DROP PROCEDURE IF EXISTS update_job; 分隔符$$ 创建过程更新_作业(pjob VARCHAR(20
DROP PROCEDURE IF EXISTS update_job;
分隔符$$
创建过程更新_作业(pjob VARCHAR(20),peno INT)
程序:开始
声明vjob VARCHAR(20)
结束程序$$
定界符
调用update_job('thisverylongname',7788)
为什么呢?如果从逻辑上考虑,我需要使用错误代码1406,它代表真正的错误,而不是1265
DECLARE too_long CONDITION FOR 1265;
DECLARE no_data CONDITION FOR 1329;
DECLARE EXIT HANDLER FOR no_data
SELECT 'There is no such employee' AS message;
DECLARE EXIT HANDLER FOR too_long
SELECT 'Job name can be 9 characters maximum' AS message;
SELECT job INTO vjob FROM emp WHERE empno = peno;
UPDATE emp SET job = pjob WHERE empno = peno;
SELECT 'Row updated successfully' AS message;