Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
开始后出现MySQL存储过程语法错误_Mysql_Stored Procedures_Syntax Error - Fatal编程技术网

开始后出现MySQL存储过程语法错误

开始后出现MySQL存储过程语法错误,mysql,stored-procedures,syntax-error,Mysql,Stored Procedures,Syntax Error,我正在尝试重新创建存储过程(因为我无法编辑主体)。我调用SHOW CREATE PROCEDURE以使用与原始存储过程相同的格式,但当我尝试重新创建它时,会出现以下错误: 错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第11行“”附近要使用的正确语法 错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解在第1行“DECLARE organization_id BIGINT(20)UNSIGNED”附近使用

我正在尝试重新创建存储过程(因为我无法编辑主体)。我调用SHOW CREATE PROCEDURE以使用与原始存储过程相同的格式,但当我尝试重新创建它时,会出现以下错误:

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第11行“”附近要使用的正确语法

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解在第1行“DECLARE organization_id BIGINT(20)UNSIGNED”附近使用的正确语法

错误1064(42000):您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“DECLARE lobb_pod_id BIGINT(20)UNSIGNED”附近使用的正确语法

代码如下:

CREATE DEFINER=`lms`@`10.0.0.%`PROCEDURE`CREATE\u组织`(
在admin_username VARCHAR(255)中,
机构名称中的VARCHAR(100)
)
开始
声明管理员用户id BIGINT(20)未签名;
声明组织id BIGINT(20)未签名;
声明大厅id BIGINT(20)未签名;
选择ID、帐户到管理员\用户\ ID、组织\ ID
来自用户
其中username=admin\u username;
插入播客(`title`、`description`、`owner`、`scene`)
价值观(CONCAT(组织名称,“村庄”),
CONCAT(“组织名称为“学生和教师”的大会空间和中心”),
管理员\用户\ id,
“村庄”
);
结束
我粘贴到中,得到了相同的结果,尽管粘贴到中让我大吃一惊。我确信这是一个简单的遗漏,但对我来说并不明显。

您在存储过程定义之前和之后遗漏了定义:

如果使用mysql客户端程序定义包含分号字符的存储程序,则会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以使mysql将整个存储程序定义传递给服务器

要重新定义mysql分隔符,请使用delimiter命令。[…]分隔符更改为//以启用整个 定义作为单个语句传递给服务器,然后 恢复到;在调用过程之前。这使得; 要传递到的过程体中使用的分隔符 而不是被mysql本身解释

由于存储的过程定义和主体是正常的,syntax chack对您表示赞许,但代码无法在您的客户机中正常运行

使用以下框架定义存储过程:

delimiter //
create procedure ...
...
end
//
delimiter ;

就是这样-我从您的骨架中更改的唯一一件事是我删除了尾随的“delimeter”;我会将其添加回去,除非您希望通过会话//终止所有命令。如果我的回答有助于解决问题,那么请将其标记为已接受,以便让其他观众知道您的问题已得到回答。啊-这将解释为什么我的其余命令没有终止(facepalm)