2 u011605971 u011605971 于 2016.04.11 10:55 提问

MySQL:为什么这样的小改动会造成存储过程错误呢?
 DELIMITER $$                  
USE mysql$$
DROP PROCEDURE IF EXISTS demo$$
CREATE PROCEDURE demo(_id INT, _content VARCHAR(64))    
BEGIN              
    SET @id = _id;
    SET @content = _content;
                                                                                      
    PREPARE stmt FROM "INSERT INTO blog (id, content) VALUES(?, ?)";
    EXECUTE stmt USING @id, @content;
    DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
DELIMITER $$

如果改写成如下就会报错:

 DELIMITER $$

USE mysql$$
DROP PROCEDURE IF EXISTS demo$$
CREATE PROCEDURE demo(_id INT, _content VARCHAR(64))    
BEGIN              
    -- set @id = _id;
    -- set @content = _content;

    PREPARE stmt FROM "INSERT INTO blog (id, content) VALUES(?, ?)";
    EXECUTE stmt USING _id, _content;
    DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
 错误代码: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '_id, _content;
    DEALLOCATE PREPARE stmt;
END' at line 7

3个回答

u011605971
u011605971   2016.04.11 12:53
已采纳

查找官方问道找到答案了,USING只能接user variable

http://dev.mysql.com/doc/refman/5.6/en/execute.html

action_puke
action_puke   2016.04.11 11:36

双-- 就是将其注释掉了 ,所以数据库缺少'_id, _content;

CSDNXIAOD
CSDNXIAOD   2016.04.11 12:05

MySQL错误,存储过程死循环错误
Mysql 存储过程 不存在错误
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
为什么会这样呢?
 学得不是很好耶
datagridview实例(误)
datagridview实例,麻烦帮我看看,为什么会这样呢?
Mysql索引概念和存储过程
索引 索引算法 1.二叉树索引,时间复杂度O(lgN)。 2.哈希表,时间复杂度O(1)。 索引原则: 1.不过度索引 2.索引条件列(where后面最频繁的条件比较适宜索引) 3.索引散列值,过于集中的值不要索引。例如:给“男”“女”索引,意义不大。 索引缺点: 降低了增删改的速度(update/delete/insert) 增大了表的文件大小(索引文件甚至可能比
mysql存储过程定义一个判断事务是否异常的错误变量
create pro_name(v v_type) begin start transaction declare  v_error int default=0; declare continue handler for sqlexception set v_error=1; ..... if v_error =1 then    rollback; else
MySQL存储过程中的错误处理 以及mybatis调用存储过程的例子
MySQL存储过程中的错误处理 参考链接: http://blog.csdn.net/liyongshun82/article/details/52813711 mybatis中调用存储过程 参考链接: https://www.cnblogs.com/hellokitty1/p/5807392.html 存储过程: CREATE PROCEDURE `sp_combine_admin_gr...
MySQL存储过程中的错误处理
当MySQL执行存储过程遇到错误时,适当处理它,如继续执行或退出当前代码段,并返回有意义的错误提示是很重要的。一方面提高程序的容错能力,另一方便当程序出错时,开发人员也能准确定位错误的地方。 在本章MySQL教程中,我们将学习如何在存储过程中处理程序错误。 声明处理程序 MySQL为我们提供了一种简单的方法定义处理程序,我们可以使用DECLARE HANDLER语句,
mysql的procedure错误回滚问题
先科普一点知识:mysql在一个事物中发生错误时,是不会回滚整个事物的。 我们先证明这点 mysql> desc wzy; +-------+---------+------+-----+---------+-------+ | Field | Type    | Null | Key | Default | Extra | +-------+---------+------+-
Mysql 会导致锁表的语法-线上问题常有
最近再找一些Mysql锁表原因,整理出来一部分sql语句会锁表的,方便查阅,整理的不是很全,都是工作中碰到的,会持续更新 笔者能力有限,如果有不正确的,或者不到位的地方,还请大家指出来,方便你我,方便大家。 此测试环境 Mysql 5.5 基于innodb 引擎 [sql] view plain copy insert 
MYSQL 1728错误 不能创建存储过程 怎么解决
【错误过程】:MySQL从5.1升级至5.5后在调用存储过程时报出“Cannot load from mysql.proc. The table is probably corrupted。”【造成原因】:MySQL升级完成后未对相关数据库执行升级.【解决办法】:在命令行中执行mysql_upgrade -uroot -p 即可~
mysql的存储过程不允许锁表
可以通过触发器来实现特殊功能。