mysql - 我可以将unit关键字保存到MYSQL中的变量中吗?

标签 mysql stored-functions

我想写一个这样的程序:

CREATE PROCEDURE `addByType`(IN myDate DATETIME, IN myType INT, OUT output DATETIME)
BEGIN
DECLARE unit ?;
CASE  
    WHEN myType = 1 THEN 
        SET unit = HOUR;        
    WHEN myType = 2 THEN
        SET unit = DAY;
    ...
END CASE;
SELECT TIMESTAMPADD(unit, 1, myDate) INTO output;
END

有可能吗?我可以将单位关键字存储到变量中吗?或者还有其他方法可以达到同样的目的吗?

最佳答案

请尝试一下这个:

CREATE PROCEDURE `addByType`(IN myDate DATETIME, IN myType INT, OUT output DATETIME)
BEGIN

CASE  
    WHEN myType = 1 THEN 
        SET @unit = 'HOUR';        
    WHEN myType = 2 THEN
        SET @unit = 'DAY';
END CASE;

SET @sql = CONCAT('SELECT TIMESTAMPADD(', @unit, ', 1, \'', myDate, '\') INTO @output;');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET output = @output;

END

可能包含语法错误,必须查找某些内容。但我相信你能弄清楚。得走了,明天再去看看。

附:Here's the manual entry for prepared statements .

关于mysql - 我可以将unit关键字保存到MYSQL中的变量中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118154/

相关文章:

php - 项目从本地主机移动到第三方主机 : CodeIgniter Database Class not returning query results, 但 MySQLI 确实如此

c# - 如何找到导致 EntityCommandExecutionException 出现的原因

mysql - mysql奇怪的 "Duplicate entry"错误

mysql - 这个带有 HAVING MAX 的查询实际上如何正确工作?

postgresql - Postgres : Returning Results or Error from Stored Functions

mysql - 如何在 MySql 程序中抛出错误?

sql - PostgreSQL 函数数字类型错误

mysql - 如何有效地计算 MySQL 中的序列中断/漏洞?

mysql - SELECT...INTO 在存储过程中返回 null

php - 我需要使用什么mysql代码?查找日期之间创建的所有 ID