调用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);