作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在存储过程中检查查询结果
SELECT start_date_time,length_time_interval_s FROM table LIMIT 1 INTO @date1, @length1
是一些数据(也就是select返回了一个匹配),那个数据匹配(或者不匹配)其他一些数据,根据检查结果做 Action ?我需要做类似的事情
此外,我是否必须预先声明@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_time
和 table.length_time_interval_s
可能是 NULL
,而 date2
和 time2
可能不会。如果规则不同,条件表达式也需要更改。
如果您希望我解释我的代码的任何部分,经过一夜安眠,我很乐意这样做。
关于mysql - MySQL 中的 SELECT INTO 变量 - 如何检查结果是否存在以及如何使用结果执行 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366088/
我是一名优秀的程序员,十分优秀!