2016-03-09 63 views
0

我評論說,當我嘗試創建一個函數來分析特殊字符並遞歸調用時,我遇到了問題。解析特殊字符 - 函數Mysql 5.5?

MySQL代碼:

DROP FUNCTION IF EXISTS fn_obt_val_par_campo; 
DELIMITER $$ 
CREATE FUNCTION fn_obt_val_par_campo(campo VARCHAR(80)) 
    RETURNS VARCHAR(80) 
BEGIN 

    DECLARE par_campo VARCHAR(80); 
    DECLARE for_campo VARCHAR(80); 
    DECLARE ind_campo INT DEFAULT 1; 

    SET for_campo = LOWER(campo); 

    WHILE ind_campo = 1 DO 

     IF INSTR(for_campo, 'á') != 0 THEN 
      SET par_campo = UPPER(REPLACE(for_campo, 'á', 'a')); 
      SET for_campo = par_campo; 
      SET ind_campo = 1; 
     ELSEIF INSTR(for_campo, 'é') != 0 THEN 
      SET par_campo = UPPER(REPLACE(for_campo, 'é', 'e')); 
      SET ind_campo = 1; 
     ELSEIF INSTR(for_campo, 'í') != 0 THEN 
      SET par_campo = UPPER(REPLACE(for_campo, 'í', 'i')); 
      SET ind_campo = 1; 
     ELSEIF INSTR(for_campo, 'ó') != 0 THEN 
      SET par_campo = UPPER(REPLACE(for_campo, 'ó', 'o')); 
      SET ind_campo = 1; 
     ELSEIF INSTR(for_campo, 'ú') != 0 THEN 
      SET par_campo = UPPER(REPLACE(for_campo, 'ú', 'u')); 
      SET ind_campo = 1; 
     ELSE 
      SET par_campo = UPPER(for_campo); 
      SET ind_campo = 0; 
     END IF; 

    END WHILE; 

    RETURN par_campo; 

END; 
$$ 
DELIMITER ; 

諮詢永遠不會結束,並且連接被阻止的mysql:

SELECT fn_obt_val_par_campo('ALVARZ') AS CAMPO 

我希望你能幫助我與我的問題。

回答

0

此無關的特殊字符:

CREATE FUNCTION fn_obt_val_par_campo(campo VARCHAR(80)) 
    RETURNS VARCHAR(80); 
         ^---this is the error 
BEGIN 

沒有允許創建/開始,這一切之間的分隔符。

+0

OP已經有'delimiter $$'。問題在於無論您將分隔符更改爲什麼,分隔符都不允許爲OP所在的位置。這是一個扁平化的語法錯誤,因爲它是使用ANY分隔符的非法地方 –

+0

朋友請修改我的查詢,如果我能支持Mysql查詢 –