2012-03-28 88 views
-1

请帮我找到我犯错的地方吗?哪里错了?

delimiter // 
CREATE FUNCTION `count_photos_in_gallery`(`tmp_gallery_id` INT(11) NOT NULL) RETURNS TINYINT(3) UNSIGNED 
BEGIN 
    DECLARE `tmp_count` TINYINT(3) UNSIGNED DEFAULT 0; 

    SELECT COUNT(`id`) INTO `tmp_count` FROM `photos_items` WHERE `gallery_id`=`tmp_gallery_id` LIMIT 1; 

    RETURN `tmp_count`; 
END// 

错误:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL) RETURNS TINYINT(3) UNSIGNED BEGIN DECLARE tmp_count TINYINT(3) UNSI' at line 1

+7

那么,我们如何才能发现其中的错误如果我们不知道问题是什么? – 2012-03-28 07:28:23

+1

你为什么认为有错误?你得到的错误是什么? – Gavriel 2012-03-28 07:28:51

+0

定义READS SQL DATA后返回语句 – silly 2012-03-28 07:30:13

回答

2

变化的函数声明,参数不能有NOT NULL选项 -

... 
CREATE FUNCTION `count_photos_in_gallery`(`tmp_gallery_id` INT(11)) 
    RETURNS TINYINT(3) UNSIGNED 
... 
+0

好吧,我想通了,但告诉我为什么? – marverix 2012-03-28 07:39:49

+0

'NULL'和'NOT NULL'是列定义属性(来自CREATE TABLE或ALTER TABLE语句)。 CREATE FUCTION语法不允许它。 – Devart 2012-03-28 07:52:42

+0

@marverix你为什么需要它不是null? – 2012-03-28 07:59:43

1

尝试这个

DELIMITER // 
CREATE FUNCTION `count_photos_in_gallery`(`tmp_gallery_id` INT(11)) RETURNS TINYINT(3) UNSIGNED 
BEGIN 
    DECLARE `tmp_count` TINYINT(3) UNSIGNED DEFAULT 0; 

    SELECT COUNT(`id`) INTO `tmp_count` FROM `photos_items` WHERE `gallery_id`=`tmp_gallery_id` LIMIT 1; 

    RETURN `tmp_count`; 
END//