
concatenar usando case
Publicado por lic.blg (1 intervención) el 27/04/2017 01:35:55
buenas tardes
quiero generar una cadena a partir del numero de campos que pueda encontrar en una tabla quedando asi: 0010000001". cuando llega al numero 9 funciona bien (0010000009), pero a partir del 10 me sale esto: "100010". He revisado mi cóodigo pero no encuentro el problema. Lo dejo a continuación esperando puedan apoyarme:
Aclaro que es una funcion a la cual le paso un parametro de tipo entero para saber que numero de expediente voy a afectar.
Desde ya, muchas gracias
quiero generar una cadena a partir del numero de campos que pueda encontrar en una tabla quedando asi: 0010000001". cuando llega al numero 9 funciona bien (0010000009), pero a partir del 10 me sale esto: "100010". He revisado mi cóodigo pero no encuentro el problema. Lo dejo a continuación esperando puedan apoyarme:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BEGIN
DECLARE lcla VARCHAR(7); 'Para guardar la longitud de una consulta
DECLARE ncla INTEGER; 'Para guardar cuantos registros ya llevan activos
DECLARE nuevaclave VARCHAR(10); 'Esta sera la nueva cadena
SELECT count(clave) INTO ncla FROM expedientes; 'verifico cuantos registros llevan activos
SELECT length(ncla) INTO lcla; ' de la consulta anterior verifico cuanta longitud tiene
CASE lcla
WHEN 1 THEN SELECT concat ('001000000',ncla) INTO nuevaclave;
WHEN 2 THEN SELECT concat ('00100000'+ncla) INTO nuevaclave;
WHEN 3 THEN SELECT concat ("0010000"+ncla) INTO nuevaclave;
WHEN 4 THEN SELECT concat ("001000"+ncla) INTO nuevaclave;
WHEN 5 THEN SELECT concat ("00100"+ncla) INTO nuevaclave;
WHEN 6 THEN SELECT concat ("0010"+ncla) INTO nuevaclave;
ELSE
SELECT concat ("001"+ncla) INTO nuevaclave;
END CASE;
RETURN nuevaclave;
END
Aclaro que es una funcion a la cual le paso un parametro de tipo entero para saber que numero de expediente voy a afectar.
Desde ya, muchas gracias
Valora esta pregunta


0