2016-04-02 9 views
0

Ich erhalte diese Fehlermeldung:Syntaxfehler in der MySQL-Funktion während des Laufens Code

#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

wenn ich Code in phpMyAdmin gefolgt laufen auch Ausdruck neben der zweiten erklären diesen Fehler erscheinen:

unrecognized statement type (near declare)

Was kann Ursache für diesen Fehler sein? (Phpmyadmin, Version, usw.)

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

Sie könnten nur brauchen eine 'delimiter' Anweisung vor der Funktion. –

+0

Eigentlich hatte ich zuvor hinzugefügt, ich bekam immer noch den gleichen Fehler, wenn der Begrenzer Ausdruck im obigen Code existiert. –

Antwort

0

Funktioniert gut, wenn wir Begrenzer verwenden.

Try this:

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

danke. Ich hatte das Begrenzungszeichen nur über der Funktion definiert. –

+0

Willkommen @Algorismus :) –

Verwandte Themen