gpt4 book ai didi

mysql - MySQL 中的 SELECT INTO 变量 - 如何检查结果是否存在以及如何使用结果执行 IF 语句?

转载 作者:行者123 更新时间:2023-11-29 02:49:47 24 4
gpt4 key购买 nike

如何在存储过程中检查查询结果

SELECT start_date_time,length_time_interval_s FROM table LIMIT 1 INTO @date1, @length1

是一些数据(也就是select返回了一个匹配),那个数据匹配(或者不匹配)其他一些数据,根据检查结果做 Action ?我需要做类似的事情

  • 如果返回数据(找到行)
    • 如果变量@date1 和@length1 等于之前设置的@date2 和@length2
      • 插入 1
    • else(如果变量不等于@date2 和@length2)
      • 插入2
  • else(如果没有返回数据,则为0行)
    • 插入3

此外,我是否必须预先声明@date1 和@length1,否则它们将在选择期间声明?文档有点不清楚。

最佳答案

下面的过程应该做你想做的:

CREATE PROCEDURE my_procedure (IN date2 DATETIME, IN length2 DATETIME)
BEGIN
DECLARE date1 DATETIME;
DECLARE length1 DATETIME;
DECLARE found INTEGER DEFAULT TRUE;

DECLARE cursor1 CURSOR FOR
SELECT start_date_time, length_time_interval_s
FROM table;

DECLARE CONTINUE HANDLER FOR NOT FOUND
SET found = FALSE;

OPEN cursor1;
FETCH cursor1 INTO date1, length1;

IF found THEN
IF date1 IS NULL or length1 IS NULL OR date1 <> date2 OR length1 <> length2 THEN
-- perform insert2
ELSE
-- perform insert1
END IF;
ELSE
-- perform insert3
END IF;

CLOSE cursor1;
END;

像往常一样,我将错误处理和消除语法错误留给读者作为练习。

一个潜在的陷阱:IF 条件假定 table,start_date_timetable.length_time_interval_s 可能是 NULL,而 date2time2 可能不会。如果规则不同,条件表达式也需要更改。

如果您希望我解释我的代码的任何部分,经过一夜安眠,我很乐意这样做。

关于mysql - MySQL 中的 SELECT INTO 变量 - 如何检查结果是否存在以及如何使用结果执行 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366088/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com