2012-02-05 3 views
0

Вот моя процедура:Неверное имя таблицы при вызове процедуры 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 couponUniqueID=couponID; 
END$$ 

Вот мой призыв:

CALL couponExpires(1, @expirationDate); 
SELECT @expirationDate; 

Это дает мне блоб. 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

Определить функцию, а не процедуру:

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.

Смежные вопросы