这是我的程序:
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;
这给了我一个blob。 blob 19B,当我点击它时,它给出了错误“无效的表名。”
而且,是的,表存在:
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';
知道我做错了吗?
答案 0 :(得分:0)
定义功能,而不是过程:
DROP FUNCTION IF EXISTS couponExpires$$
CREATE FUNCTION couponExpires(IN couponID BIGINT)
RETURNS DATETIME
BEGIN
RETURN (
SELECT purchaseTimestamp
FROM CouponUnique
WHERE couponUniqueID=couponID);
END$$
然后
SELECT couponExpires(1);
您将遇到的另一个问题是您使用了错误的数据类型。您应该使用DATETIME,而不是TIMESTAMP。更新/插入行时,TIMESTAMP会自动更新当前时间,并且您无法为其提供值 - 即使为null。