Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Hadess_inf en 22 Abril 2010, 14:54 pm



Título: Ayuda con procedimiento. Simular array en text
Publicado por: Hadess_inf en 22 Abril 2010, 14:54 pm
Pues tengo este procedimiento:

Código
  1. CREATE PROCEDURE ee(ingreso text)
  2. BEGIN
  3. DECLARE tamanio tinyint;
  4. DECLARE comas tinyint;
  5. DECLARE elemento text;
  6. SET tamanio = LENGTH(ingreso);
  7. SET comas = instr(ingreso,',');
  8. while comas > 0 do
  9. SET elemento = SUBSTRING(ingreso,1,comas-1);
  10. SET ingreso = SUBSTRING(ingreso,comas+1);
  11. SELECT elemento;
  12. SET comas = instr(ingreso,',');
  13. END while;
  14. END //
  15.  

Aqui esta en ejecucion:

Código
  1. CALL ee('e,a,d,g');//
  2. +----------+
  3. | elemento |
  4. +----------+
  5. | e        |
  6. +----------+
  7. 1 ROW IN SET (0.00 sec)
  8.  
  9. +----------+
  10. | elemento |
  11. +----------+
  12. | a        |
  13. +----------+
  14. 1 ROW IN SET (0.00 sec)
  15.  
  16. +----------+
  17. | elemento |
  18. +----------+
  19. | d        |
  20. +----------+
  21. 1 ROW IN SET (0.00 sec)
  22.  
  23. 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.


Título: Re: Ayuda con procedimiento. Simular array en text
Publicado por: ^Tifa^ en 22 Abril 2010, 21:50 pm
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: