2012-03-28 11 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

を試してみてくださいをさて、どのように我々は間違いを見つけることができます問題が何であるかわからない場合は? –

+1

なぜあなたは間違いがあると思いますか?あなたが得たエラーは何ですか? – Gavriel

+0

返信文の後にREADS SQL DATAを定義します – silly

答えて

2

変更関数宣言、パラメータは、NOT NULLオプションはできません -

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

OK、私はそれを理解しましたが、私の理由を教えてください。 – marverix

+0

'NULL'と 'NOT NULL'は、(CREATE TABLE文またはALTER TABLE文の)列定義属性です。 CREATE FUCTION構文はそれを許可しません。 – Devart

+0

@marverixなぜあなたはそれがヌルである必要がありますか? –

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// 
関連する問題