2016-11-21 8 views
0

UDFを作成できません。作成時にエラーの下に取得していますSQLでUDFを作成できません

Error: 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 '; 
CREATE FUNCTION `seat_count`(seatno varchar(250)) 
RETURNs varchar(250) 
BEG' at line 1 

コード:http://pastebin.com/uf4DkXZh

コード:

CREATE FUNCTION `seat_count`(seatno VARCHAR(250)) 
RETURNS VARCHAR(250) 
BEGIN 
SET @str= REPLACE(seatno, ',', ''); 
SET @stcnt=CHAR_LENGTH(str); 
SET @x=1; 
SET @result; 
WHILE (@x <= @stcnt) 
DO 
    SET @st=SUBSTRING_INDEX(@str,',',X); 
    IF ((LENGTH(@seatno) - LENGTH(REPLACE(@seatno, st, '')))/LENGTH(@st)=1) 
     THEN SET @result=CONCAT(@st,@result); 

    END IF; 
    SET @[email protected]+1; 
END WHILE; 
RETURN @result; 

END $$

+0

コードはあなたの質問に追加するには時間がかかりすぎませんので、pastebinは使用せず、ここに追加してください。また、「私はUDFをMySQLで作成しようとしていますが、このエラーが出ます。すでにもっとよく見えます。あなたの問題: '$$;'の ';'を削除し、最後の 'END'の後に' $$ 'を追加してもう一度やり直してください(残りの部分をチェックしなかったので、他の問題もあります)。 – Solarflare

+0

Plzはいくつかの入力テキストを納得させました – MasoodUrRehman

答えて

1

あなたがMySQLでストアドプロシージャを開発する場合、次のことができ入力パラメータを渡してローカル変数を宣言すると、ローカル変数には、ユーザ定義変数とは異なり、先頭に接頭辞が付きません。これらの接頭辞の前には、@が付いています。

DELIMITER $$ 
    CREATE FUNCTION `SEAT_COUNT`(`seatno` VARCHAR(250)) RETURNS VARCHAR(250) 
     DETERMINISTIC 
    BEGIN 

     DECLARE result VARCHAR(250); 
     SET @str = REPLACE(seatno, ',', ''); 
     SET @stcnt = CHAR_LENGTH(@str); 
     SET @x = 1; 

      WHILE (@x <= @stcnt) 
      DO 
       SET @st = SUBSTRING_INDEX(@str,',',X); 
       IF ((LENGTH(@seatno) - LENGTH(REPLACE(@seatno, st, '')))/LENGTH(@st)=1) 
        THEN SET result = CONCAT(@st, @result); 
       END IF; 
       SET @x = @x+1; 
      END WHILE; 

     RETURN result; 

    END$$ 
    DELIMITER ; 

変数の詳細 procedure vs user-definedのためにあなたは、私は、これはあまりにもあなたの最後で働くことを願っています代わりに、ローカル変数のユーザ定義例えば SET @resultとして例えば DECLARE result VARCHAR(250)

を結果変数を定義しています。

関連する問題