mysql 结束符报错_mysql 存储过程语法报错?报错

字符集的问题,估计你的客户端与server的字符集不一致

drop procedure if exists pro_insert;

delimiter //

CREATE PROCEDURE pro_insert(in p VARCHAR(255) CHARSET utf8)

BEGIN

DECLARE v1 varchar(255) CHARACTER SET utf8;

SET v1=p;

INSERT INTO student1(id) VALUES(v1);

END

//

delimiter ;

######我把代码按你说的改了,还是有错######看看是不是1应该是‘1’,字符类型的

######回复

@飞天小猪猪 : 1、varchar不是类型,varchar(1)这种才是 2、用个好点的编辑器吧,写上就报红叉了,比如自带的workbench 3、百度去,多了去的解答######你看看下面的错误,我改为了'1'######

######

DECLARE v1 VARCHAR

SET v1=p

你还问为什么老出错,我说为啥不出错,你看看你的语法正确吗,sql语句后面的分隔符呢,默认都是; 你这两句和insert 一起合并成一句sql,你觉得正常吗 ######回复

@飞天小猪猪 : 我靠你把上面语句全写在一起了?######我把两个分割符加上后和原来得报错提醒一样######

######

VARCHAR要指明宽度,要在前面声明语句的结束符号######看下边######

引用来自“yizhilong”的评论

字符集的问题,估计你的客户端与server的字符集不一致

drop procedure if exists pro_insert;

delimiter //

CREATE PROCEDURE pro_insert(in p VARCHAR(255) CHARSET utf8)

BEGIN

DECLARE v1 varchar(255) CHARACTER SET utf8;

SET v1=p;

INSERT INTO student1(id) VALUES(v1);

END

//

delimiter ;

是这个吗?不行啊 ######因为你太笨######你在检查下自己的存储过程语法,至少SQLServer不是这样的,首行要有as关键字, https://msdn.microsoft.com/zh-cn/library/ms187926.aspx######我用的mysql,还是要谢谢你######

delimiter //

delimiter ;

很多时候,是这2句的问题,一般都要先重定义语义结束符,默认是";",先重定义成 "//",用完之后,再换回 ";"。因为你不这么做,你存储过程内的分号会被当作“语句结束了”来执行,这样整个语句就报错了。

######谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值