在 MySQL/MariaDB 中创建存储过程时出错
Posted
技术标签:
【中文标题】在 MySQL/MariaDB 中创建存储过程时出错【英文标题】:error creating stored procedure in MySQL/MariaDB 【发布时间】:2018-03-23 10:42:38 【问题描述】:我正在尝试在 mysql 中创建一个存储过程,但我不断收到错误
#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“DELIMITER”附近使用的正确语法
预期的分隔符。 (靠近位置 10 的“”)
我做错了什么? 编辑:摆脱了错误,现在我的程序只是插入空值,知道为什么吗?
DELIMITER //
CREATE PROCEDURE sp_TEXT4()
BEGIN
DECLARE refstock VARCHAR(20);
DECLARE frkmarca INT ;
DECLARE frkallextras INT ;
DECLARE frkeconservacao INT ;
DECLARE frkallcategorias INT ;
DECLARE modelo VARCHAR(45);
DECLARE titulo VARCHAR(45);
DECLARE ano INT;
DECLARE mes INT;
DECLARE horas INT;
DECLARE obs TEXT;
DECLARE preco DOUBLE;
DECLARE minpreco DOUBLE;
DECLARE negociavel BINARY(1);
DECLARE youtube VARCHAR(45);
SET refstock="refstock";
SET frkmarca=1;
SET frkallextras=1;
SET frkeconservacao=1;
SET frkallcategorias=1;
SET modelo ="modelo";
SET titulo="titulo";
SET ano=1;
SET mes=1;
SET horas=1;
SET obs="obs";
SET preco="1";
SET minpreco="1";
SET negociavel=true;
SET youtube="youtube";
INSERT INTO anuncios (refstock,frkmarca,frkallextras,frkeconservacao,frkallcategorias,modelo,titulo,ano,mes,horas,obs,preco,minpreco,negociavel,youtube)
VALUES (@refstock,@frkmarca,@frkallextras,@frkeconservacao,@frkallcategorias,@modelo,@titulo,@ano,@mes,@horas,@obs,@preco,@minpreco,@negociavel,@youtube);
END;
//
DELIMITER;
【问题讨论】:
mysql: DELIMITER syntax error at line 1的可能重复 @mustaccio 不,不是 【参考方案1】:DELIMITER
和分隔符之间需要空格:
DELIMITER ;
【讨论】:
【参考方案2】:DELIMITER $$
CREATE DEFINER=`id1278863_root`@`%` PROCEDURE `sp_TEXT5`()
BEGIN
DECLARE refstock VARCHAR(20);
DECLARE frkmarca INT ;
DECLARE frkeconservacao INT ;
DECLARE frkallcategorias INT ;
DECLARE modelo VARCHAR(45);
DECLARE titulo VARCHAR(45);
DECLARE ano INT;
DECLARE mes INT;
DECLARE horas INT;
DECLARE obs TEXT;
DECLARE preco DOUBLE;
DECLARE minpreco DOUBLE;
DECLARE negociavel BINARY(1);
DECLARE youtube VARCHAR(45);
SET @refstock="refstock";
SET @frkmarca=1;
SET @frkeconservacao=1;
SET @frkallcategorias=1;
SET @modelo ="modelo";
SET @titulo="titulo";
SET @ano=1;
SET @mes=1;
SET @horas=1;
SET @obs="obs";
SET @preco="1";
SET @minpreco="1";
SET @negociavel=true;
SET @youtube="youtube";
INSERT INTO anuncios (refstock,frkmarca,frkeconservacao,frkallcategorias,modelo,titulo,ano,mes,horas,obs,preco,minpreco,negociavel,youtube)
VALUES (@refstock,@frkmarca,@frkeconservacao,@frkallcategorias,@modelo,@titulo,@ano,@mes,@dia,@obs,@preco,@minpreco,@negociavel,@youtube);
END$$
DELIMITER ;
现在可以使用了,谢谢
【讨论】:
以上是关于在 MySQL/MariaDB 中创建存储过程时出错的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL/MariaDB 中创建与 root 具有相同权限的用户? [关闭]