为IN变量添加值

时间:2013-12-30 00:16:59

标签: mysql stored-procedures

如果最初发送的值为零,我需要将21600000分配给fromDate

我现在的代码是

CREATE PROCEDURE reportFreeCooling(
  IN fromDate VARCHAR (50),
  IN toDate   VARCHAR (50),
  IN timeZone VARCHAR (50)
)
BEGIN
  DECLARE startDate VARCHAR (50);
  DECLARE endDate   VARCHAR (50);
  DECLARE startDateOriginal VARCHAR (50);
  DECLARE mylogID   INT;
  DECLARE myItemId varchar (50);
  DECLARE myItemId2 varchar (50);
  DECLARE xHours varchar (50);
  DECLARE endHoursNull varchar(50);
  DECLARE endHoursNotNull varchar (50);

当然还有其余的存储过程。其余的是正确的我只需要知道如果零是发送的内容,如何更改fromDate。

2 个答案:

答案 0 :(得分:2)

我还没有测试过这些,但它们可能会指出你正确的方向。

选项1:使用字符串比较比较fromDate ...

IF fromDate = "0" THEN 
   SET @fromDate = '21600000'; 
ELSEIF fromDate > 0 THEN 
   ...
ELSE  
   ...
END IF;

选项2:将from从varchar转换为int

DECLARE fromDateInt INT;

SELECT CONVERT(fromDate as SIGNED) INTO fromDateInt;
IF fromDate = 0 THEN 
   SET @fromDate = '21600000'; 
...

Cast from VARCHAR to INT - MySQL

另外,您可能想检查/处理: 1.Date可能是浮动吗? 2.DateDate可能为NULL吗?

答案 1 :(得分:0)

这段代码实际上需要一个;在set语句的末尾和if语句的结尾。

IF firstRowDate > startDateOriginal THEN SET startDateOriginal = firstRowDate; END IF;