Pues tengo este procedimiento:
create procedure ee(ingreso text)
begin
declare tamanio tinyint;
declare comas tinyint;
declare elemento text;
set tamanio = length(ingreso);
set comas = instr(ingreso,',');
while comas > 0 do
set elemento = substring(ingreso,1,comas-1);
set ingreso = substring(ingreso,comas+1);
select elemento;
set comas = instr(ingreso,',');
end while;
end //
Aqui esta en ejecucion:
call ee('e,a,d,g');//
+----------+
| elemento |
+----------+
| e |
+----------+
1 row in set (0.00 sec)
+----------+
| elemento |
+----------+
| a |
+----------+
1 row in set (0.00 sec)
+----------+
| elemento |
+----------+
| d |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
No muestra el ultimo caracter g.
Alquien me ayuda a solucionar el problema.
Gracias.
PD: La idea es mandar un string que representara a un array (cada elemento esta separado por una coma) .... el procedure debe separar cada elemento.
No he podido ejecutar tu procedimiento (el trabajo me tiene a tope).
Pero mirandolo...sino me equivoco.. tu duda esta en esta indicacion:
SET comas = instr(ingreso,',');
Fijate que esta leyendo hasta donde vea una coma (,) y aca tu:
call ee('e,a,d,g');//
Donde termina la coma??? en la letra d ahora.. intenta despues de la letra g colocar una coma(,) que quede asi:
call ee('e,a,d,g,');//
Y dime si funciona... no lo he probado, pero es lo unico que visualmente se me aclara un poco :rolleyes: