【发布时间】:2014-06-23 05:08:26
【问题描述】:
由于某些奇怪的原因,从存储过程插入不起作用。 这就是我想要做的:
DROP TABLE IF EXISTS test;
CREATE TABLE IF NOT EXISTS test(
id INT(9) NOT NULL AUTO_INCREMENT
,name VARCHAR(30) NOT NULL
,PRIMARY KEY (id)
) 默认字符集=utf8; 插入测试(名称)值('A');
从命令行插入没有问题。
然后我创建了一个存储过程来执行相同类型的插入:
DROP PROCEDURE IF EXISTS storedtest;
DELIMITER $$
CREATE PROCEDURE storedtest()
BEGIN
declare insert_sql varchar(200);
SET insert_sql = 'insert into test (name) values(3)';
SELECT insert_sql;
PREPARE mystm FROM @insert_sql;
EXECUTE mystm;
END$$
DELIMITER ;
call storedtest();
这给了我错误: ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“NULL”附近使用正确的语法
空? NULL 是从哪里来的?
我也试过把sql-insert改成这样(不知道是不是好办法):
SET insert_sql = "insert into test (name) values('3')";
但是 mysql 给了我完全相同的错误。 有人知道吗?
【问题讨论】: