Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures MySQL错误1406和错误1265-不同的行为_Stored Procedures - Fatal编程技术网

Stored procedures MySQL错误1406和错误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

我有一个表emp,它的job列定义为varchar(9)

当我在MySQL workbench中使用以下语句时,引发的错误是1406-数据太长

更新emp set job='thisverylongname',其中empno=7788

但是,当我在MySQL过程中使用相同的语句时,该过程不会出现此错误,相反,我必须将错误号更改为1265-数据截断

程序代码为

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;