Adsense

miércoles, 14 de noviembre de 2007

procedimiento en firebird sql para generar una secuencia de numeros

¿Cómo encontrar un numero faltante en una secuencia de registros de factura?
Si el campo es un varchar (no es mi culpa... ya estaba asi cuando trabaje) tengo un procedimiento en firebird que genera los numeros desde hasta un intervalo. Comparas y listo.

Un ejemplo de la llamada al proc es esta GENERCOD('S0000000',5603,5750)

Disfrutenlo. Alguna mejora avisenme y propongan


CREATE PROCEDURE GENERCOD(
CAMPO VARCHAR(10) CHARACTER SET NONE,
DESDE SMALLINT,
HASTA SMALLINT)
RETURNS(
RESUL VARCHAR(10) CHARACTER SET NONE)
AS
DECLARE VARIABLE X VARCHAR(10);
DECLARE VARIABLE T VARCHAR(10);
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE LA INTEGER;
DECLARE VARIABLE LB INTEGER;
BEGIN
I=DESDE;
WHILE (I<=HASTA) DO BEGIN T= CAST(I AS VARCHAR(10)); LA=STRLEN(CAMPO); LB=STRLEN(I); LA=LA-LB; RESUL=SUBSTR(CAMPO,1,LA); RESUL=RESUL||T; SUSPEND; I=I+1; END END

No hay comentarios: