mysql - 向 IN 变量添加值

标签 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。

最佳答案

我还没有测试过其中的任何一个,但它们可能会为您指明正确的方向。

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

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

选项 2:将 fromDate 从 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. fromDate可以是float吗?
2. fromDate 可以为 NULL 吗?

关于mysql - 向 IN 变量添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831629/

相关文章:

mysql - MySQL 中的 CREATE TABLE 语法错误

php - 能够在 WordPress : Does this sort of feature need a custom database table? 中发布 'like' 博客文章

javascript - 当只有数字输入时,我需要准备查询吗?

mysql - MYSQL存储过程中if else

performance - 使用存储过程同步两个表,仅更新和添加值不匹配的行

.net - 使用 CLR UDT 作为 SQL Server 存储过程参数

MySQL 存储过程 - "You have an error in your SQL syntax"

arrays - Excel VBA 数组未从存储过程记录集中接收所有值 - 结果与在 Excel 之外运行存储过程不同

php - 找不到 Laravel 迁移表

mysql - 如何选择列的不同前缀子字符串?