mysql - 创建存储过程出错

标签 mysql stored-procedures

我试图通过连接两个表(客户表和查询表)来检索值,然后我试图将检索到的值存储到另一个表中,由于与此处无关的原因,该表会派上用场。然后我最后从查询表中删除检索到的值。当我尝试执行存储过程时,出现以下屏幕截图中显示的错误。 MySQL Error

我该如何解决这个错误?

存储过程:-

CREATE PROCEDURE `backup_eq`(
    IN `eq` VARCHAR(15), IN `mail` VARCHAR(30), IN `dates` DATE, IN `cmp` VARCHAR(10), IN `rea` VARCHAR(50)) 
NOT DETERMINISTIC MODIFIES SQL DATA SQL SECURITY DEFINER 
BEGIN 
SELECT eqno into @eno,Date1 into @d,cmpname into @c,subject into @s,cid into @cd 
FROM `enquiry` NATURAL JOIN `customer` 
WHERE eqno=eq and email=mail and cmpname=cmp and Date=dates; 
INSERT INTO `enquiryBin`(`Eqno`, `Date1`, `Cmpname`, `Subject`, `CID`, `Reason`) 
VALUES (@eno,@d,@c,@s,@cd,rea); 
DELETE FROM `enquiry` 
WHERE eqno=eq and cid=@cd and cmpname=cmp and Date1=dates; 
END

下面给出两个表的建表语句

CREATE TABLE `customer` (
  `CID` int(15) NOT NULL,
  `Address` varchar(100) NOT NULL,
  `Name` varchar(20) NOT NULL,
  `email` varchar(30) NOT NULL,
  `phone` bigint(20) NOT NULL
)
ALTER TABLE `customer`
  ADD PRIMARY KEY (`CID`);

  CREATE TABLE `enquiry` (
  `Eqno` varchar(15) NOT NULL,
  `Date1` date NOT NULL,
  `Cmpname` varchar(10) NOT NULL,
  `Subject` varchar(100) NOT NULL,
  `CID` int(15) NOT NULL
)

  ALTER TABLE `enquiry`
  ADD PRIMARY KEY (`Eqno`,`Cmpname`,`CID`,`Date1`)

最佳答案

SELECT eqno into @eno,Date1 into @d,cmpname into @c,subject into @s,cid into @cd

应该是

SELECT eqno, Date1, cmpname, subject, cid INTO @eno, @d, @c, @s, @cd

也就是说,将选择列表中的所有列与 INTO 子句分开命名。

引用语法文档:https://dev.mysql.com/doc/refman/5.7/en/select-into.html

关于mysql - 创建存储过程出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916590/

相关文章:

PHP MySQL SUM 表中带有 0/1 标记的多列

mysql - SQL-连接表并检查是否存在不工作/语法不正确的内容

postgresql - 在没有程序代码的情况下处理 PostgresQL 中的除法错误 - 这可能吗?

MYSQL 创建新的存储过程

php - 如何缓存mysql存储的函数

java - 在 HIbernate 中调用存储过程时找不到列 'id'

MySQL连接3个表并计算另一个

mysql - 多个 case 语句/多个 Update 语句

PHP、Mysqli、SQL查询获取值并显示其他

c# - 存储过程参数仅返回第一个字符