Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tubadc

criando função.... erro de sintaxe... onde... ?

Recommended Posts

Estou tentando rodar a seguinte função num banco mysql Versão do Servidor: 5.0.37-community-nt / Versão do cliente MySQL: 4.1.22

 

CREATE FUNCTION AlfaNum(Texto VARCHAR(500))

RETURNS varchar(500) CHARSET latin1

BEGIN

declare semAcento varchar(500);

select lower(Texto) into semAcento;

select replace(semAcento,'ã','a') into semAcento;

select replace(semAcento,'á','a') into semAcento;

select replace(semAcento,'â','a') into semAcento;

select replace(semAcento,'à','a') into semAcento;

select replace(semAcento,'ê','e') into semAcento;

select replace(semAcento,'é','e') into semAcento;

select replace(semAcento,'ë','e') into semAcento;

select replace(semAcento,'ï','i') into semAcento;

select replace(semAcento,'í','i') into semAcento;

select replace(semAcento,'ó','o') into semAcento;

select replace(semAcento,'ô','o') into semAcento;

select replace(semAcento,'ö','o') into semAcento;

select replace(semAcento,'ú','u') into semAcento;

select replace(semAcento,'ü','u') into semAcento;

select replace(semAcento,'ç','c') into semAcento;

select replace(semAcento,'ñ','n') into semAcento;

select upper(SemAcento) into semAcento;

RETURN semAcento;

END;

 

e sempre me retorna o seguinte erro

#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 'varchar(500)' at line 4

 

alguem sabe oque estou fazendo de errado... pois jah testei nas versões 4.1.22 / 4.1.7 e 5.0.22 e nenhuma delas funcionou... rodei uma função simples hello world e vai...

> CREATE FUNCTION hello(

> sCHAR( 20 )

> ) RETURNS CHAR( 50 ) RETURN CONCAT( 'Hello, ', s, '!' ) ;

 

estou usando o phpmyadmin.

 

 

Obrigado

 

 

PS: estou desesperado... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

O valor ser retornado pela função é DETERMINISTIC, ou seja, será determinado pela função...segue abaixo como deve ser:

 

mysql> CREATE FUNCTION AlfaNum(Texto VARCHAR(500))
    -> RETURNS varchar(500) CHARSET latin1
    -> DETERMINISTIC
    -> BEGIN
    -> declare semAcento varchar(500);
    -> SELECT lower(Texto) INTO semAcento;
    -> SELECT REPLACE(semAcento,'ã','a') INTO semAcento;
    -> SELECT REPLACE(semAcento,'á','a') INTO semAcento;
    -> SELECT REPLACE(semAcento,'â','a') INTO semAcento;
    -> SELECT REPLACE(semAcento,'à','a') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ê','e') INTO semAcento;
    -> SELECT REPLACE(semAcento,'é','e') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ë','e') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ï','i') INTO semAcento;
    -> SELECT REPLACE(semAcento,'í','i') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ó','o') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ô','o') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ö','o') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ú','u') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ü','u') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ç','c') INTO semAcento;
    -> SELECT REPLACE(semAcento,'ñ','n') INTO semAcento;
    -> SELECT upper(SemAcento) INTO semAcento;
    -> RETURN semAcento;
    -> END;
    -> //
Query OK, 0 rows affected (0.09 sec)

 

Um palavra emperrou a compilação!! ehehe

 

Abração, nos dê um retorno se funfou ou não!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.