调用mysql过程时表名无效

调用mysql过程时表名无效,mysql,Mysql,以下是我的程序: DROP PROCEDURE IF EXISTS `couponExpires`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `couponExpires`(IN couponID BIGINT, OUT expirationDate TIMESTAMP) BEGIN SELECT purchaseTimestamp INTO expirationDate FROM CouponUnique WHERE couponUnique

以下是我的程序:

DROP PROCEDURE IF EXISTS `couponExpires`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `couponExpires`(IN couponID BIGINT, OUT 
expirationDate TIMESTAMP)
BEGIN
SELECT purchaseTimestamp
INTO expirationDate
FROM CouponUnique
WHERE couponUniqueID=couponID;
END$$
这是我的电话:

CALL couponExpires(1, @expirationDate);
SELECT @expirationDate;
这给了我一个污点。BLOB19B,当我点击它时,它给我错误的无效表名

是的,该表存在:

CREATE TABLE IF NOT EXISTS `CouponUnique` (
`couponUniqueID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`couponPackageID` int(10) unsigned NOT NULL,
`userID` int(10) unsigned NOT NULL,
`purchaseTimestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`useTimestamp` timestamp NOT NULL DEFAULT '1970-01-01 07:00:01';
知道我做错了什么吗?

定义一个函数,而不是一个过程:

DROP PROCEDURE IF EXISTS `couponExpires`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `couponExpires`(IN couponID BIGINT, OUT 
expirationDate TIMESTAMP)
BEGIN
SELECT purchaseTimestamp
INTO expirationDate
FROM CouponUnique
WHERE couponUniqueID=couponID;
END$$
然后

另一个问题是使用了错误的数据类型。您应该使用日期时间,而不是时间戳。每当您更新/插入一行时,TIMESTAMP会自动更新为当前时间,并且您不能为它提供一个值,甚至不能为null

SELECT couponExpires(1);