Código SQL:
Ver originalDELIMITER $$
DROP FUNCTION IF EXISTS SI.SOLO_CARACTERES $$
CREATE FUNCTION SI.SOLO_CARACTERES (VAR CHAR(100)) RETURNS CHAR(100)
DETERMINISTIC
BEGIN
DECLARE POS INT DEFAULT 1;
DECLARE TOTAL CHAR(100) DEFAULT '';
DECLARE VALOR INT DEFAULT 0;
REPEAT
IF INSTR('ABCDEFGHIJKLMNOPQRSTUVWXYZ', SUBSTRING(VAR, POS, 1))>0 THEN
SET TOTAL = CONCAT(TOTAL,SUBSTRING(VAR, POS, 1));
END IF;
SET POS = POS + 1;
UNTIL POS > LENGTH(VAR) END REPEAT;
--IF (TOTAL='INSERTAR') THEN
--INSERT INTO SI.rango_facturas
--SELECT *
--FROM rangos A
--WHERE A.Funcion='F';
--END IF;
RETURN POS;
END $$
DELIMITER ;
Si ingresas palabra 'prueba' y la variable pos se retorna con un 6, ya sabes que está recorriendo bien el repeat.
En conclusión, de esta función que quieres observar o debbuguear?
Código mysql:
Ver originalmysql> DELIMITER $$
Query OK, 0 rows affected, 1 warning (0.00 sec)
->
-> --IF (TOTAL
='INSERTAR') THEN -> --WHERE A.Funcion
='F'; ->
-> RETURN TOTAL;
->
Query OK, 0 rows affected (0.02 sec)
mysql> DELIMITER ;
mysql
> select solo_caracteres
('dan12');+--------------------------+
| solo_caracteres('dan12') |
+--------------------------+
| dan |
+--------------------------+
mysql
> select solo_caracteres
('insertar1234');+---------------------------------+
| solo_caracteres('insertar1234') |
+---------------------------------+
| insertar |
+---------------------------------+
mysql
> select solo_caracteres
('ins456ertar1234');+------------------------------------+
| solo_caracteres('ins456ertar1234') |
+------------------------------------+
| insertar |
+------------------------------------+
mysql>
Yo la veo trabajando bien