【问题标题】:Create a stored procedure that deletes a row when entering ID for that row创建一个存储过程,在输入该行的 ID 时删除该行
【发布时间】:2019-04-08 14:32:02
【问题描述】:

我的存储过程在语法和逻辑上都有问题。在 sqlfiddle.com 上尝试时出现以下错误。

我也不确定逻辑是否正确。无论如何我可以通过输入 ID 进行检查,并且查询将返回一个表,其中包含该 ID 的行已被删除?

创建一个名为 delete_id 的过程,用于删除 ID 所在的行

CREATE PROCEDURE DELETE_ID (ID_INPUT IN INT)
AS
BEGIN
  DELETE FROM TABLE ALBUM WHERE ID=ID_INPUT;
END;

预期结果:输入一个 Id,SQL 将删除包含该 ID 的行

实际结果:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“TABLE ALBUM WHERE ID=ID_INPUT”附近使用正确的语法

【问题讨论】:

  • 去掉table这个词。它不是语法的一部分。
  • Simple MySQL Syntax Error的可能重复
  • HI Gordon,即使我删除了单词表。它仍然显示错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“IN INT) AS BEGIN DELETE FROM WHERE ID=ID_INPUT”附近使用正确的语法
  • 我不是 mysql 专家,但看来您必须将参数列表写为 (IN id_input INT)

标签: mysql sql


【解决方案1】:

您需要在代码的开头添加“DELIMITER //”,在末尾添加“//”。所以你的代码应该是这样的

DELIMITER //

CREATE PROCEDURE `DELETE_ID`(IN `ID_INPUT` INT)   
BEGIN

DELETE FROM `ALBUM` WHERE `ID` = ID_INPUT;

END //

【讨论】:

  • 谢谢。你知道我如何在 db-fiddle 中测试代码吗?就像输入一个 Id 并查看执行过程后表如何变化?
  • 对不起,我没用过 db fiddle。在发布之前,我以两种方式测试了代码。第一个在 mysql 控制台中,第二个在 phpmyadmin 中。
  • 如果我的代码回答了您的问题,您能否将其标记为已回答满意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-12
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2021-02-25
  • 2014-05-31
  • 2010-09-22
相关资源
最近更新 更多