我有一个名为procedure.sql的Sql文件,其中包含一个过程。Maria DB版本:服务器版本:10.0.29-MariaDB-0ubuntu0.16.04.1Ubuntu 16.04
但我得到的错误如下:
>mysql -u root -p XXX < /home/azure/Downloads/procedure.sql
>Enter password:
>ERROR 1064 (42000) at line 2: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '();
>USE XXX;
>CREATE OR REPLACE PROCEDURE XXX.updateDoc_StorageID ()
>BEGIN' at line 1
有人能帮我吗?
procedure.sql代码:
DELIMITER //
DROP PROCEDURE IF EXISTS XXX.updateDoc_StorageID;
USE XXX;
CREATE OR REPLACE PROCEDURE XXX.updateDoc_StorageID ()
BEGIN
DECLARE myTransacID INT DEFAULT 0;
DECLARE myTransProductId INT DEFAULT 0;
DECLARE myDocStoreID VARCHAR(500) DEFAULT '0';
DECLARE my_count INT DEFAULT 0;
DECLARE trans_csr CURSOR FOR SELECT 1,2 FROM MainTable ORDER BY TransactionID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET my_count=1;
SET my_count=0;
OPEN trans_csr;
trans_loop:LOOP
FETCH trans_csr INTO myTransacID,myTransProductId;
IF my_count=1 THEN
LEAVE trans_loop;
END IF;
If(myTransProductId=8)
then
if exists(....)
then
.......
end if;
elseif (myTransProductId=11)
then
if exists(........)
then
.......
END IF;
END IF;
END LOOP trans_loop;
CLOSE trans_csr;
SET my_count=0;
END;
//
DELIMITER ;
我得到的参考资料来自:https://mariadb.com/kb/en/mariadb/create-procedure/
版本10.0的正确语法。x Stored流程将是:
DELIMITER //
DROP PROCEDURE IF EXISTS XXX.updateDoc_StorageID;
USE XXX;
CREATE OR REPLACE PROCEDURE XXX.updateDoc_StorageID ()
BEGIN
DECLARE myTransacID INT DEFAULT 0;
DECLARE myTransProductId INT DEFAULT 0;
DECLARE myDocStoreID VARCHAR(500) DEFAULT '0';
DECLARE my_count INT DEFAULT 0;
DECLARE trans_csr CURSOR FOR SELECT 1,2 FROM MainTable ORDER BY TransactionID;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET my_count=1;
SET my_count=0;
OPEN trans_csr;
trans_loop:LOOP
FETCH trans_csr INTO myTransacID,myTransProductId;
IF my_count=1 THEN
LEAVE trans_loop;
END IF;
If(myTransProductId=8)
then
if exists(....)
then
.......
end if;
elseif (myTransProductId=11)
then
if exists(........)
then
.......
END IF;
END IF;
END LOOP trans_loop;
CLOSE trans_csr;
SET my_count=0;
END;
//
DELIMITER ;
语法错误不是针对CREATE PROCEDURE
,而是针对前面的DROP PROCEDURE
,您不应该在那里有括号。
DROP PROCEDURE IF EXISTS XXX.updateDoc_StorageID;
第二个错误随之而来,因为该过程没有被删除,所以它仍然存在。
此外,修复分隔符——如果您在开始时设置$$
,那么每一个进一步的查询都应该以$$
结尾,而不是分号。
我是数据库新手我有这个错误我正在使用MariaDB 错误1064(42000):您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,了解第3行“hotel_name varchar(20),city varchar(10))附近使用的正确语法 另一个错误1064(42000):您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解第1行“”附近要使用的正确语法
我正在尝试在phpmyadmin上运行SQL,但出现错误,并且找不到其中的错误。 1064-您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在“使用android_api/**选择数据库”附近使用的正确语法**/ 我的代码如下:
给了我一个错误: “错误1064(42000):您的SQL语法中有错误;请查看与MariaDB服务器版本相对应的手册,以便在第1行”创建表(varchar(64)、var(64)、var'“附近使用正确的语法”
我试图将以下数据插入数据库。但它给了我上面这个错误。您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解第1行中“”附近使用的正确语法。 我试过几种方法,但都没有修好。
我在MySQL5.7.19版本中尝试执行查询视图时遇到了一个错误
我有以下查询和错误: 错误消息: