龙猫12138 2017-06-07 13:45 采纳率: 0%
浏览 790
已采纳

mysql 中下面这个存储过程为什么错了?

delimiter @@
create procedure dolist9 ()
begin
declare str1 , str2 varchar (20) ;
declare results varchar (2000) def;
declare flag boolean default true ;
declare cur cursor for select name,homeaddr from baseinfo ;
declare continue handler for not found set flag=false ;

open cur ;
while flag do
    fetch cur into str1 , str2 ;
    if (left(str1,1)='陈') 
    then set results = concat(str1 ,str2) ;
    end if ;
end while ;
close cur ;
select results ;

end @@
delimiter ;

baseinfo中已经有了name和homeaddr两列,一共是237行,运行call dolist9 时报错incorrect string value图片说明
name的类型是varchar(50) homeaddr类型是varchar(255) 但是varchar(20)是完全可以分别装下name列值和homeaddr列值的。
过程的作用是判断名字是不是姓陈然后把姓陈的人和住址连起来。

求大家帮我看看这个应该怎么改。先多谢大家!

  • 写回答

1条回答 默认 最新

  • sinat_34881157 2017-06-08 04:11
    关注

    MYSQL中没有boolean类型,直接用int 存01,来判断即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?