MySQL版本:5.5.36
数据库管理工具:Navicat 11.1.13
数据库表:《SQL必知必会(第4版)》
“存储过程”学习教程参考:https://www.yiibai.com/mysql/stored-procedures-parameters.html
经典教材《SQL必知必会(第四版)》确实是本入门的好书,要想深入还是得去扩展书本的内容,存储过程书中给的案例并不多也不太详细,这里我参考了“易百教程”给出的实例,用入参:IN,出参:OUT,对数据库表”products“进行了仿写。
新建 函数——过程——输入相关参数——编写begin和end之间的主体 后得到:
在”查询编辑器“中写调用方法:
CALL count_vendid('BRS01',@total);
SELECT @total
感觉没问题后运行,结果:
[SQL]CALL count_vendid('BRS01',@total);
[Err] 1406 - Data too long for column 'vendid' at row 313
翻译过来:对列‘vendid’来说数据太长。锁定‘vendid’,发现我的入参:IN vendid char 这里没给添上大小。如果不给出具体长度,那它的长度就是1。数据库里定义的vend_id字段长度为10,但是实际只用了5个字符大小,
添上长度后:IN vendid char(5)
再次运行得到想要的结果:
所以一定要注意把该写的写上了,避免不必要的错误。