Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

procedimiento para cortar e insertar valores segun parametros

Estas en el tema de procedimiento para cortar e insertar valores segun parametros en el foro de Bases de Datos General en Foros del Web. Hola mi consulta es como puedo hacer para cortar un string viene formateado desde la url "56-123456,02-524584,23-584778" y asi sucesivamente lo que necesito es que ...
  #1 (permalink)  
Antiguo 04/12/2009, 11:06
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
procedimiento para cortar e insertar valores segun parametros

Hola mi consulta es como puedo hacer para cortar un string
viene formateado desde la url "56-123456,02-524584,23-584778" y asi sucesivamente

lo que necesito es que 56 y 123456 y los otros string se separen y queden asi
INSERT INTO t_telefonocelularfax(idpersona, codarea,numero, idtipotelefonocelular)
VALUES(id,56,123456,1), (id,02,524584,1), (id,23,584778,1)....

ya que el 56 es de un campo(codarea) y 123456(telefono) es de otro campo y los vaya insertando

yo estaba haciendo esto pero no me funcka bien

Código PHP:
...
CNRP_PERSONA (IN telefonos VARCHAR(255))
DECLARE 
fono varchar(15);
...
SET idpersonaLAST_INSERT_ID();
...
IF 
telefonos 0 THEN
    
WHILE LENGTH(telefonos) > DO
        
SET fono SUBSTRING_INDEX(telefonos','1);
        
SET telefonos SUBSTR(telefonosLENGTH(fono)+2);
        
INSERT INTO t_telefonocelularfax(idpersonacodarea,numeroidtipotelefonocelular
        
VALUES(ultimoidpersona,fono,1);
    
END WHILE;
.... 
me devuelve -123456 y asi sucesivamete

de antemano gracias
  #2 (permalink)  
Antiguo 04/12/2009, 13:34
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: procedimiento para cortar e insertar valores segun parametros

En vez de

SET fono
= SUBSTRING_INDEX(telefonos, ',', 1);


puedes poner estas dos líneas:

SET codigo = SUBSTRING_INDEX(SUBSTRING_INDEX(telefonos, ',', 1), '-', 1);
SET num_tfno= SUBSTRING_INDEX(SUBSTRING_INDEX(telefonos, ',', 1), '-', -1);

Y en el INSERT tienes 4 campos y sólo 3 valores, debería ser así:

VALUES(ultimoidpersona, codigo, num_tfno, 1);
  #3 (permalink)  
Antiguo 04/12/2009, 14:19
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
Respuesta: procedimiento para cortar e insertar valores segun parametros

serser ahi me funka, pero si pongo el while este se queda pegado, es decir si le saco me inserta el resgistro bien pero solo uno, los demas no, descomento el while y se keda pegado...

que puede ser??

Código PHP:
...
telefonos "02-5585788,25-54854,05-454888"...
 IF 
telefonos 0 THEN
    
/*WHILE LENGTH(telefonos) > 0 DO*/
        
SET codfono SUBSTRING_INDEX(SUBSTRING_INDEX(telefonos','1), '-'1);
        
SET fonoSUBSTRING_INDEX(SUBSTRING_INDEX(telefonos','1), '-', -1);
        
INSERT INTO t_telefonocelularfax(idpersonacodigoareanumeroidtipotelefonocelularfax
        
VALUES(ultimoidpersona,codfono,fono,1);
    
/*END WHILE;*/
    
END IF; 
  #4 (permalink)  
Antiguo 04/12/2009, 14:29
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: procedimiento para cortar e insertar valores segun parametros

Sólo tenías que quitar la primera línea y has eliminado también esta:

SET telefonos = SUBSTR(telefonos, LENGTH(fono)+2);

que es la parte esencial para que la condición WHILE finalize, es decir, al quitar esta línea LENGTH(telefonos) siempre será > 0

NOTA: Debes cambiar el parámetro fono del LENGTH.

Última edición por serser; 04/12/2009 a las 14:37
  #5 (permalink)  
Antiguo 04/12/2009, 15:12
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
Respuesta: procedimiento para cortar e insertar valores segun parametros

La verdad que ya no se que hacer... si m puedes ayudar arrglar esta parte te lo agradeceria, al ejecutar me esta insertando lo siguiente
codnum | numero
88 | 88
05 | 454888
54 | 54
25 | 54854
88 | 88
02 | 5585788


orginal: telefonos = "02-5585788,25-54854,05-454888" //asi viene pasada por parametro

esto es lo que necesito
codnum | numero
02 | 5585788
25 | 54854
05 | 454888



Código PHP:
 WHILE LENGTH(telefonos) > DO
    
SET codfono SUBSTRING_INDEX(SUBSTRING_INDEX(telefonos','1), '-'1);
    
SET fonoSUBSTRING_INDEX(SUBSTRING_INDEX(telefonos','1), '-', -1);
        
SET telefonos SUBSTR(telefonosLENGTH(fono)+2);
        
INSERT INTO t_telefonocelularfax(idpersonacodigoareanumeroidtipotelefonocelularfax
       
VALUES(ultimoidpersona,codfono,fono,1);
    
END WHILE; 
  #6 (permalink)  
Antiguo 04/12/2009, 15:29
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: procedimiento para cortar e insertar valores segun parametros

Mejor volvamos al principio ya que veo que el problema es el LENGHT, que con mi código es más difícil de implementar.

Prueba este código:

Código PHP:
IF telefonos 0 THEN
    
WHILE LENGTH(telefonos) > DO
        
SET tfno SUBSTRING_INDEX(telefonos','1);
        
SET codfono SUBSTRING_INDEX(tfno'-'1);
        
SET fono SUBSTRING_INDEX(tfno'-', -1);
        
SET telefonos SUBSTR(telefonosLENGTH(tfno)+2);
        
INSERT INTO t_telefonocelularfax(idpersonacodarea,numeroidtipotelefonocelular
        
VALUES(ultimoidpersona,codfono,fono,1);
    
END WHILE; 
  #7 (permalink)  
Antiguo 04/12/2009, 15:50
 
Fecha de Ingreso: abril-2006
Mensajes: 240
Antigüedad: 18 años
Puntos: 1
Respuesta: procedimiento para cortar e insertar valores segun parametros

Gracias Serser ahi kunko de lo mas bien

hice la prueba cambiar las var, y kunko perfecto
te pasate.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:40.