当前位置: 首页 > 知识库问答 >
问题:

MariaDB/MySQL中创建过程中的神秘错误

竺国兴
2023-03-14

我试图在MariaDB 10.2中创建一个简单的过程,但遇到了有关变量定义的问题。

我收到(conn:107)您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,了解在我声明变量时,在第3行消息的“”附近使用的正确语法。

我读了MariaDB留档,它说一个变量是这样定义的DECLAREvar_name[,var_name]... type[DEFAULT value]

我错在哪里?我来自Oracle SQL,一些sintax是为我准备的。

我使用Eclipse和MariaDB JDBC在SQL上连接。

CREATE PROCEDURE nom_jobs_insert(IN p_name varchar(100) CHARACTER SET 'utf8')
BEGIN
    DECLARE counter INT DEFAULT 0;

    SELECT count(*) INTO counter
    FROM nom_jobs
    WHERE lower(name) = lower(p_name)

    IF counter = 1 THEN
        INSERT INTO nom_jobs(name) VALUES (p_name);
    END IF;
END;

共有3个答案

刁远
2023-03-14

以下是指向缺少分隔符的线索:

  • 第3行“”附近的

将它们放在一起——它认为有一个以结尾的3行语句。但是CREATE PROCEDURE应该比这长。

艾焱
2023-03-14

您在声明表达式中没有错误,请添加 之后选择语句

彭正谊
2023-03-14

我找到了解决办法。

在MariaDB中,在创建过程之前必须定义一个分隔符,并且需要标记过程代码的完成位置。

DELIMITER //
CREATE PROCEDURE nom_jobs_insert(IN p_name varchar(100) CHARACTER SET 'utf8')
BEGIN
    DECLARE counter INT DEFAULT 0;

    SELECT count(*) INTO counter
    FROM nom_jobs
    WHERE lower(name) = lower(p_name);

    IF counter = 1 THEN
        INSERT INTO nom_jobs(name) VALUES (p_name);
    END IF;
END; //
 类似资料:
  • 我正试图在MySQL中创建一个存储过程,但我一直收到错误消息 #1064年的今天,您的SQL语法出现错误;查看与您的MariaDB服务器版本对应的手册,以了解第1行“DELIMITER”附近使用的正确语法 预期分隔符。(在位置10的“”附近) 我做错了什么?编辑:去掉错误后,现在我的程序只是插入空值,知道为什么吗?

  • 我试图在mysql/mariadb中创建一个SP,里面有一个声明的变量——但我不明白,它有什么问题!?! MySQL返回以下错误: 服务器类型:MariaDB 服务器-版本: 10.3.11-MariaDB-1:10.3.11 maria~仿生-mariadb.org二进制分布 ProTokoll-版本:10 服务器-Zeichensatz:UTF-8 Unicode(utf8)

  • 我试图创建一个存储过程,但不断出现错误: #1064年的今天,您的SQL语法出现错误;查看与您的MySQL服务器版本对应的手册,以了解第3行“NOT DETERMINISTIC CONTAINS SQL SECURITY DEFINER COMMENT”“B”附近使用的正确语法 我的SQL如下: 我尝试过包含分隔符,但没有结果。我想问题可能出在引号里。有人能给我指出解决办法吗?谢谢 MySQL 5

  • 我正在为MariaDB中的拆分字符串创建一个过程,但它给出了一个错误 “#1064-您的SQL语法有错误;请查看与您的MariaDB服务器版本相对应的手册,以了解使用近‘TRUNCATE TABLE的正确语法。”

  • 问题内容: 这让我发疯。 还给我 那将是线 怎么了 我尝试了一些小的更改,但总是收到相同的错误。我检查了文档,但看不到语法错误。我知道这是一个愚蠢的错误,但是我坚持了大约半个小时。是一个游标,它迭代每一行并为每一行执行一个存储过程;我已经用存储函数完成了它(它的工作原理很像魅力),但是在服务器上发布时,我看到我的共享主机不支持存储函数,只支持存储过程:(因此,这是我最好的方法我发现了。 问题答案:

  • 我想使用phpmyadmin在MySQL数据库中进行存储过程。 几分钟后,我在“创建过程”对话框中键入并按下GO,我的语法出现了错误。 我在谷歌上搜索过哪一个是错的,但仍然没有找到。请任何人给我一些建议如何解决这个问题。 这是我的MySQL存储过程查询。 我有这样的错误 处理您的请求: 以下查询失败:"CREATE DEFINER=@PROCEDURE(INBIT(1), ININT, INDAT