Ver Mensaje Individual
  #10  
Antiguo 18-11-2010
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Reputación: 14
bulc Va por buen camino
Mimi

Cita:
Empezado por kikecg Ver Mensaje
Hola a todos.

Estoy creando un procedimiento almacenado en Interbase 7.5 y me encuentro con el siguiente problema:

Necesito generar una cadena de texto de un máximo de 160 caracteres. Generar la cadena no es problema, comprobar la longitud de la misma, tampoco, pero una vez que localizo que tiene más de 160 caracteres (cuando se da el caso), necesito "recortarla" a dicha longitud.

Mi idea era utilizar SUBSTR, pero está función solo soporta una cadena de 80 caracteres. Me pregunto si existe otra función que me permita tomar solo una parte de la cadena original, un equivalente al LeftStr de Delphi, por ejemplo.

Otra solución que me han propuesto es meterme en un bucle e ir copiando la cadena caracter a caracter, pero no me funciona:

Código SQL [-]if (STRLEN(TEXTO) > 160) then BEGIN I = 1; V_AUX = ''; WHILE (I <= 160) DO BEGIN V_AUX = V_AUX || TEXTO[i]; I = I + 1; END TEXTO = V_AUX; END


Al compilar el procedimiento me indica "Invalid array reference", supongo que refiriendose a: Código SQL [-]TEXTO[i]

.

TEXTO está definida como VARCHAR de 160, quizá el problema esté ahí.

¿Alguien me puede dar una idea?

Muchas gracias, saludos a todos.

Prueba con StringList
Responder Con Cita