Jay*_*len 18 mysql stored-procedures
我有一个MySQL存储过程,我从表中找到最大值.
如果没有值,我想将变量设置为昨天的日期.
DECLARE current_procedure_name CHAR(60) DEFAULT 'accounts_general';
DECLARE last_run_time datetime DEFAULT NULL;
DECLARE current_run_time datetime DEFAULT NOW();
-- Define the last run time
SET last_run_time := (SELECT MAX(runtime)
FROM dynamo.runtimes WHERE procedure_name = @current_procedure_name);
-- if there is no last run time found then use yesterday as starting point
IF(@last_run_time IS NULL) THEN
SET last_run_time := DATE_SUB( NOW(), INTERVAL 1 DAY);
END IF;
SELECT @last_run_time;
Run Code Online (Sandbox Code Playgroud)
问题是@last_run_time始终为NULL.
由于某种原因,以下代码未被执行
IF(last_run_time IS NULL) THEN
SET last_run_time := DATE_SUB( NOW(), INTERVAL 1 DAY);
END IF;
Run Code Online (Sandbox Code Playgroud)
如何@last_run_time正确设置变量?
wch*_*ito 29
@last_run_time是9.4.用户定义的变量和last_run_time datetime一个13.6.4.1.局部变量DECLARE语法是不同的变量.
尝试: SELECT last_run_time;
UPDATE
例:
/* CODE FOR DEMONSTRATION PURPOSES */
DELIMITER $$
CREATE PROCEDURE `sp_test`()
BEGIN
DECLARE current_procedure_name CHAR(60) DEFAULT 'accounts_general';
DECLARE last_run_time DATETIME DEFAULT NULL;
DECLARE current_run_time DATETIME DEFAULT NOW();
-- Define the last run time
SET last_run_time := (SELECT MAX(runtime) FROM dynamo.runtimes WHERE procedure_name = current_procedure_name);
-- if there is no last run time found then use yesterday as starting point
IF(last_run_time IS NULL) THEN
SET last_run_time := DATE_SUB(NOW(), INTERVAL 1 DAY);
END IF;
SELECT last_run_time;
-- Insert variables in table2
INSERT INTO table2 (col0, col1, col2) VALUES (current_procedure_name, last_run_time, current_run_time);
END$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88488 次 |
| 最近记录: |