Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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_Sql_Stored Procedures - Fatal编程技术网

mysql中的存储过程,无法找出语法错误

mysql中的存储过程,无法找出语法错误,mysql,sql,stored-procedures,Mysql,Sql,Stored Procedures,这是我的程序,下面是我的错误,除了众多的缺失,我在第2行缺失了什么 创建过程sp\u insertonject @id int 像 开始 启动交易; 更新内容\u manager.submission SET state='Rejected',其中id=@id; 插入内容管理器。提交被拒绝 (id int、link_initial varchar、email varchar、id_category int、state varchar、link_final varchar、ip_sub int、s

这是我的程序,下面是我的错误,除了众多的
缺失,我在第2行缺失了什么

创建过程sp\u insertonject
@id int
像
开始
启动交易;
更新内容\u manager.submission SET state='Rejected',其中id=@id;
插入内容管理器。提交被拒绝
(id int、link_initial varchar、email varchar、id_category int、state varchar、link_final varchar、ip_sub int、sub_date datetime)
选择
submission.id、submission.link\u首字母、submission.email、submission.id\u类别、submission.state、submission.link\u final、submission.ip\u sub、submission.sub\u日期
从…起
内容管理器提交
其中content_manager.submission.id=@id
犯罪
终止
我真的不明白我遗漏了什么语法错误,请帮忙

附言:我正在phpMyAdmin上做我的程序,如果这改变了什么

使用时,错误会移动:

创建过程sp\u insertonject
(
IN-id-int
)
开始
启动交易;
更新内容\u manager.submission SET state='Rejected',其中id=@id;
插入内容管理器。提交被拒绝
(id、链接首字母、电子邮件、id类别、状态、链接终字母、ip子字母、子字母日期)
选择submission.id、submission.link\u initial、submission.email、submission.id\u category、submission.state、submission.link\u final、submission.ip\u sub、submission.sub\u date
从content_manager.submission
其中content_manager.submission.id=@id;
犯罪
终止
错误:

#1064 - Syntax error in the query SQL near '' line 6

仍然没有解决方案

您从另一个数据库(可能是SQL SERVER)复制了代码。mysql处理这些事情的方式不同

DELIMITER $$
CREATE PROCEDURE sp_insertOnReject
(IN_id int)

BEGIN
START TRANSACTION;
SET @id = _id;
UPDATE content_manager.submission SET state = 'Rejected' WHERE id = @id;

INSERT INTO content_manager.submission_rejected
    (id ,link_initial ,email ,id_category ,state ,link_final ,ip_sub,sub_date) 
SELECT
    submission.id, submission.link_initial, submission.email, submission.id_category, submission.state, submission.link_final, submission.ip_sub, submission.sub_date
FROM
    content_manager.submission
WHERE content_manager.submission.id = @id;
COMMIT;
END$$
DELIMITER ;
请找到程序。你的程序中有很多问题

  • 参数声明
  • 作为添加的
  • 插入到包含数据类型的变量中
  • 遗漏分号


请检查语法:
CREATE[DEFINER=user]PROCEDURE sp_name([proc_parameter[,…
is@id是一个输入参数吗?如果是,则应该像CREATE PROCEDURE sp_insertOnReject(在inp_id int中)一样将其括在括号内。您正在使用的MYSQL版本以及发布的ddl和dml将有助于进一步修复查询。将其包装在括号内不会改变任何东西,同一行上出现相同的错误,我的MYSQL是8.0版本。为什么您尝试在过程头和过程体之间放置
as
?我为您提供了一个链接,其中包含语法和大量错误示例。您试图解决什么问题?您被困在哪里?我已经知道缺少分号(正如我在问题中所写的),我用您的解决方案试一试,仍然是一个错误,我将更新问题以显示给您you@GabrieleBattistata如果您知道分号,那么为什么要发布关于错误是什么的问题?如果您遵循的是的最小部分,您将很容易找到有问题的地方。因为错误不是分号,因为在中不需要它它告诉我发现错误的那一行
其中id=id
将对每一行应用更新。SQL如何知道第一个id是表中的一列,而第二个id是过程参数?它不知道。它将两者解释为表中的列,因此
id=id
将在每一行上都是真的。解决方案:命名您的过程参数与查询中引用的表的任何列都不相同的其他名称。不(?),我不喜欢它,如果没有错误,请尝试我的解决方案
DELIMITER $$
CREATE PROCEDURE sp_insertOnReject
(IN_id int)

BEGIN
START TRANSACTION;
SET @id = _id;
UPDATE content_manager.submission SET state = 'Rejected' WHERE id = @id;

INSERT INTO content_manager.submission_rejected
    (id ,link_initial ,email ,id_category ,state ,link_final ,ip_sub,sub_date) 
SELECT
    submission.id, submission.link_initial, submission.email, submission.id_category, submission.state, submission.link_final, submission.ip_sub, submission.sub_date
FROM
    content_manager.submission
WHERE content_manager.submission.id = @id;
COMMIT;
END$$
DELIMITER ;
CREATE PROCEDURE sp_insertOnReject
(
    IN InputId int
)
BEGIN
START TRANSACTION;
    UPDATE content_manager.submission SET state = 'Rejected' WHERE id = InputId;

    INSERT INTO content_manager.submission_rejected
    (id, link_initial, email, id_category, state, link_final, ip_sub, sub_date) 
    SELECT submission.id, submission.link_initial, submission.email, submission.id_category, submission.state, submission.link_final, submission.ip_sub, submission.sub_date
    FROM content_manager.submission
    WHERE content_manager.submission.id = InputId;
    
COMMIT;
END