【问题标题】:Error in MySQL 5.1 stored ProcedureMySQL 5.1 存储过程中的错误
【发布时间】:2014-09-15 12:31:27
【问题描述】:

我是存储过程的新手

DELIMITER //
CREATE PROCEDURE sp_MyNewTable
(IN Mod nvarchar(50),IN Did int,IN startdate datetime,IN enddate datetime)
BEGIN
Declare DateDuration int,
SET actstatus=1,
SET DateDuration =  SELECT  DATEDIFF(startdate,enddate) as Datediff
insert into mytable (Duration,Module,Deptid,taskstartdate,activestatus) values       (DateDuration,Mod,did,enddate,startdate,actstatus)
 Select * from mytable 
 END //
 DELIMITER;

如果我执行此操作会出错:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 sp_MyNewTable 附近 (IN Mod nvarchar(50),IN Did int,IN startdate datetime,IN enddate datetime)

MYSQL版本是MYSQL 5.1

【问题讨论】:

  • MySQL 4.x 不支持存储过程。
  • 存储过程是在 MySQL 5 中引入的。此外……你真的还在 MySQL 4.x 上吗?基于此,我认为您的操作系统已经非常过时并且存在巨大的安全漏洞。
  • 顺便说一句,5.0以上的myql的代码是正确的

标签: mysql asp.net


【解决方案1】:

试试:

DELIMITER //

CREATE PROCEDURE `sp_MyNewTable`(IN `Mod` VARCHAR(50),
                                 IN `Did` INT,
                                 IN `startdate` DATETIME,
                                 IN `enddate` DATETIME)
BEGIN
  DECLARE `DateDuration` INT;
  DECLARE `actstatus` DATETIME;
  SET `actstatus` := 1, `DateDuration` := DATEDIFF(`startdate`, `enddate`);
  INSERT INTO `mytable`
  (`Duration`, `Module`, `Deptid`, `taskenddate`, `taskstartdate`, `activestatus`)
  VALUES
  (`DateDuration`, `Mod`, `Did`, `enddate`, `startdate`, `actstatus`);
  SELECT * FROM `mytable`;
END//

DELIMITER ;

SQL Fiddle demo

【讨论】:

  • 如何查看此过程的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-08
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-07-08
  • 2015-09-22
  • 1970-01-01
相关资源
最近更新 更多