程序不起作用

Posted

技术标签:

【中文标题】程序不起作用【英文标题】:Procedure is not working 【发布时间】:2017-09-07 22:42:18 【问题描述】:

我写了下面的存储过程来从不同的表中删除用户。但不知何故,它不起作用。如果我将单个查询保留在过程中,则它正在工作,但如果我添加更多则它不起作用。

DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `deleteUser`(IN `userid` INT)
    NO SQL
BEGIN
DELETE FROM `Table1` WHERE id=userid;
DELETE FROM `Table2` WHERE user_id=userid;
DELETE FROM `Table3` WHERE userid=userid;
END$$
DELIMITER ;

【问题讨论】:

运行时有什么错误吗? 当我使用 phpmyadmin 运行它时,它没有显示任何错误? 【参考方案1】:

我无法重现该问题:

DROP PROCEDURE IF EXISTS `deleteUser`;
DROP TABLE IF EXISTS `Table3`, `Table2`, `Table1`;

CREATE TABLE IF NOT EXISTS `Table1` (
    `id` INT
);

CREATE TABLE IF NOT EXISTS `Table2` (
    `user_id` INT
);

CREATE TABLE IF NOT EXISTS `Table3` (
    `userid` INT
);

INSERT INTO `Table1` VALUES (100), (200), (300), (400);
INSERT INTO `Table2` VALUES (100), (600), (700), (800);
INSERT INTO `Table3` VALUES (100), (900), (1000), (1100);

SELECT `id` FROM `Table1`;
SELECT `user_id` FROM `Table2`;
SELECT `userid` FROM `Table3`;

DELIMITER \\

CREATE PROCEDURE `deleteUser`(IN `_userid` INT)
BEGIN
    DELETE FROM `Table1` WHERE `id` = `_userid`;
    DELETE FROM `Table2` WHERE `user_id` = `_userid`;
    DELETE FROM `Table3` WHERE `userid` = `_userid`;
END\\

DELIMITER ;

CALL `deleteUser`(100);

SELECT `id` FROM `Table1`;
SELECT `user_id` FROM `Table2`;
SELECT `userid` FROM `Table3`;

Rextester 中的示例。

【讨论】:

以上是关于程序不起作用的主要内容,如果未能解决你的问题,请参考以下文章

VS2010每当程序运行之后点击代码页就不起作用啥原因?如果不运行程序就好

切换按钮在引导程序4中不起作用,而角度7应用程序在导航栏中不起作用

为啥这个Java程序中的set 不起作用

每秒更新 ListView 处理程序不起作用

使用 python 和 QML Oscilloscope 动态绘图效果很好,但相同的程序在树莓派中不起作用,替换功能不起作用

发布应用程序颤动时导航不起作用