2016-04-02 7 views
0

を実行している間、私はこのエラーを取得しています:構文エラーコード

unrecognized statement type (near declare)

何ができる:私は、第二宣言式の横に、このエラーが表示されてphpmyadminの中に続くコードを実行すると

#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 '' at line 4

をこれらのエラーの原因になりますか? (Phpmyadmin、バージョンなど)

create function fnc_generate_url(title_in varchar(250)) 
    returns varchar(250) 
     begin 
      declare v_count int; 
      declare v_return varchar(250); 
      declare cr_count cursor 
      for 
       select count(1) from tbl_page where page_title like concat('%',title_in,'%'); 

      open cr_count; 
       fetch cr_count into v_count; 
      close cr_count; 

      if v_count = 0 then 
       set v_return = replace(trim(title_in), ' ', '-'); 
      else 
       set v_return = concat(replace(trim(title_in), ' ', '-'),'-',v_count); 
      end if; 

      return v_return; 
     end; 
+1

はこれを試してみてください。 –

+0

実際には、前に追加していましたが、上記のコードでデリミタの式が存在する場合、同じエラーが表示されていました。ありがとう。 –

答えて

0

デリミタを使用するとうまく動作します。あなたは単に関数の前に `delimiter`文が必要な場合があります

DELIMITER $$ 
create function fnc_generate_url(title_in varchar(250)) 
    returns varchar(250) 
     begin 
      declare v_count int; 
      declare v_return varchar(250); 
      declare cr_count cursor 
      for 
       select count(1) from tbl_page where page_title like concat('%',title_in,'%'); 

      open cr_count; 
       fetch cr_count into v_count; 
      close cr_count; 

      if v_count = 0 then 
       set v_return = replace(trim(title_in), ' ', '-'); 
      else 
       set v_return = concat(replace(trim(title_in), ' ', '-'),'-',v_count); 
      end if; 

      return v_return; 
     end; 
$$ 
DELIMITER ; 
+0

ありがとう。私はデリミタを関数の上にのみ定義していました。 –

+0

ようこそ@Algorismus :) –