PDA

Ver la Versión Completa : SubString en Procedimiento Almacenado


rruffino
24-07-2007, 02:52:39
Hola amigos del foro. Estoy teniendo un problema. Estoy haciendo un procedimiento almacenado que genera un codigo de barras. Al momento de calcular los digitos verificadores necesito partir 12 strings distintos caracter a caracter y luego realizar una operación matemática. Los caracteres de cada string son numeros, para hacerlo utilizo la udf SUBSTR, pero al correr el sp da error de division por cer, o como si fallo la truncación. Cuando hago el debug del sp no tira ningu error y los calculos son correctos. Aqui les dejo el cofdigo

longitud=STRLEN(:code);
dias=1;
temporal='135793579357935793579357935793579357935793579357935';
suma=0;
while(:dias<=:longitud)do
begin
char_1=SUBSTR(:code, :dias, :dias);
char_2=SUBSTR(:temporal, :dias, :dias);
suma=suma + (Cast(:Char_1 as integer) * Cast(:char_2 as Integer));
dias=dias+1;
end

Code y Temporal son las cadenas de texto.

Estoy usando interbase 6.5.
Desde ya muchas gracias y espero sus respuestas.
Saludos, Román.-;)

jhonny
24-07-2007, 15:35:34
Por alguna razón creo que cuando envías el parámetro de entrada llamado ":Code" desde la aplicación al procedimiento almacenado, estas incluyendo el carácter que usualmente envían los lectores de codigo de barras al final de la cadena; La mayoría envían por defecto un [TAB] y otros un [ENTER].


Pregunta: ¿En Interbase 6.5 no existe la sentencia substring, como en FireBird 1.5?

Paoti
24-07-2007, 16:20:15
El error, ami me paso la semana pasada, y es por que quieres almacenar en una variable o campo un valor mucho más grande que el permitido pro la variable, sea tipo numerico o cadena de texto.




jhonny desconcozco si está la función en interbase, en fb 1_5 sí.

rruffino
28-07-2007, 02:00:30
Es como dices, trato de guardar algo que no alcanza, y no, la udf no esta en interbase. Ya solucione, gracias!!!

jhonny
30-07-2007, 15:01:03
Es como dices, trato de guardar algo que no alcanza, y no, la udf no esta en interbase. Ya solucione, gracias!!!

Solo aclarar una cosita, en FireBird Substring no es una UDF, es una sentencia ;)

rastafarey
01-08-2007, 18:57:34
El error es division por cero o truncacion de cadena.

Solo hay que leer los errores completos.