我有一个场景要声明一些数据类型的局部变量(CURRENT_SYSTEM_TIME)为“TIMESTAMP”和局部变量(CURRENT_SYSTEM_TIME)我想在游标中使用它来检查WHERE子句中的某些条件。
以下是示例:
DROP FUNCTION IF EXISTS LOCAL_VARIABLE_NOT_ABLE_TO_ACCESS;
DELIMITER $$
CREATE FUNCTION LOCAL_VARIABLE_NOT_ABLE_TO_ACCESS(USERINFORMATION VARCHAR(50))
RETURNS TIMESTAMP
NOT DETERMINISTIC
BEGIN
DECLARE CURRENT_SYSTEM_TIME TIMESTAMP;
SELECT CURRENT_TIMESTAMP INTO CURRENT_SYSTEM_TIME FROM DUAL ;
DECLARE DATA_LIST CURSOR FOR (SELECT COLUMN_1,COLUMN_2,COLUMN_3 FROM TABLE_1 WHERE COLUMN_10 > CURRENT_SYSTEM_TIME);
/*
some logic
*/
RETURN 1;
END$$
DELIMITER ;
COMMIT;
执行此查询后,我收到一些错误
错误代码:1064
在'DECLARE DATA_LIST CURSOR FOR附近使用的右边语法的MySQL服务器版本(从第10行的TABLE_1 WH'中选择COLUMN_1,COLUMN_2,COLUMN_3
有人可以解释一下如何在游标中使用局部变量吗?是否可以在CURSOR中使用局部变量?
答案 0 :(得分:0)
是。我们可以在函数内部使用局部变量,或者在MYSQL中使用Cursor。
检查以下代码。
在声明CURRENT_SYSTEM_TIME变量时,我们可以为它设置默认时间。
DROP FUNCTION IF EXISTS LOCAL_VARIABLE_NOT_ABLE_TO_ACCESS;
DELIMITER $$
CREATE FUNCTION LOCAL_VARIABLE_NOT_ABLE_TO_ACCESS(USERINFORMATION VARCHAR(50))
RETURNS TIMESTAMP
NOT DETERMINISTIC
BEGIN
DECLARE CURRENT_SYSTEM_TIME TIMESTAMP default CURRENT_TIMESTAMP;
DECLARE DATA_LIST CURSOR FOR (SELECT COLUMN_1,COLUMN_2,COLUMN_3 FROM TABLE_1 WHERE COLUMN_3 >
CURRENT_SYSTEM_TIME);
/* some logic */
RETURN 1;
END$$
DELIMITER ;
COMMIT;