【问题标题】:Can not execute sql statment to create procedure after copying text from a stored procedure on phpMyAdmin从phpMyAdmin中的存储过程复制文本后无法执行sql语句来创建过程
【发布时间】:2016-08-16 22:05:36
【问题描述】:

我正在尝试创建一个程序,它在一小时前工作,现在它抛出一个错误。我导出了程序(为我复制了一个文本语句 phpmyadmin 输出),它不会让我执行我导出的代码。下面是导出的代码,后面是 phpmyadmin 正在显示的错误报告。

此外,所有的 sql 查询都是独立工作的,但是在我导出它之前调用该过程时,它正在运行,但查询不会影响任何行。我是不是将变量标记错了?(我不认为我是,我确实检查过)

我输入的内容:

CREATE DEFINER=`root`@`localhost` PROCEDURE `DeleteCard`(IN `@aName` VARCHAR(255))
NO SQL
BEGIN
UPDATE Decks 
JOIN Amount ON amount.DeckName = decks.DeckName 
SET decks.DeckTotal = Decks.DeckTotal - Decks.DeckTotal
WHERE Amount.AmountName = @aName;

UPDATE Types t1
JOIN Cards ON cards.TypeName = t1.TypeName 
JOIN Amount ON amount.CardName = Cards.CardName
SET t1.TypeTotal = t1.TypeTotal - Amount.Amount
WHERE Amount.CardName = @aName;

DELETE  
FROM Amount 
WHERE CardName = @aName;


DELETE  
FROM Cards 
WHERE CardName = aName;
END

错误报告:

CREATE DEFINER=`root`@`localhost` PROCEDURE `DeleteCard`(IN `aName` VARCHAR(255))
NO SQL
BEGIN
UPDATE Decks 
JOIN Amount ON amount.DeckName = decks.DeckName 
SET decks.DeckTotal = Decks.DeckTotal - Decks.DeckTotal
WHERE Amount.AmountName = aName;

MySQL 说:文档

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 7 行的 '' 附近使用正确的语法

【问题讨论】:

标签: mysql stored-procedures phpmyadmin


【解决方案1】:

在最后一个删除查询中,变量名前缺少@

DELETE  
FROM Cards 
WHERE CardName = aName; -- should be @aName

另外,删除

DEFINER=`root`@`localhost`

从您的程序中,如果您有任何远程访问数据库的意图。

【讨论】:

  • 嘿,Shaharyar,我添加了 @ 符号,但它仍然在相同的代码部分抛出相同的错误。第 7 行,即“WHERE Amount.AmountName = @aName;”这一行
  • 您是否将这个完整的脚本作为语句运行?如果是,那么请使用 phpmyadmin GUI 来创建它。此外,除了某处的lowercaseuppercase 表名之外,所有查询看起来都很好。
  • 我使用phpmyadmin创建语句,然后我重新上传数据库,就像一个工具。我将语句复制回新数据库,我在这里……编辑名称并没有改变任何东西。
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 2019-07-16
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2015-07-29
  • 1970-01-01
相关资源
最近更新 更多