在 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 具有相同权限的用户? [关闭]

在 pl/sql 中创建过程时出现错误

尝试在 Logic 应用中创建存储帐户时出现“无效资源”消息

Asp.Net 在运行存储过程时出现超时错误

如何在存储过程中创建视图

在 Watson Studio 中创建新项目时出现问题