Ver la Versión Completa : Problema de concatenacion
elistraus
03-08-2010, 17:05:08
hola de nuevo tengo ahora este otro problema que no se como solucionarlo la idea es concatenar el año actual a la secuencia, pero no se que estoy haciendo mal, si me pueden ayudaar porfa estaré muy agradecido,,, saludos
CREATE OR REPLACE FUNCTION sideconc."TRG_SEQ_ALUM"()
RETURNS trigger AS
$BODY$
DECLARE
var NUMERIC (4,0);
BEGIN
SELECT EXTRACT(YEAR FROM now())into var;
New.codigo:=var::numeric || nextval('sideconc.seq_cod_alum');
Return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION sideconc."TRG_SEQ_ALUM"() OWNER TO postgres;
movorack
04-08-2010, 20:15:28
Hola...
creo que la concatenación no la puedes hacer entre dos numeros... para ello deberás primero convertir el numero en cadena, concatenar y luego volverlo a numero para asignarlo al campo "codigo".
he hecho esta función de ejemplo y me esta trabajando bien:
CREATE OR REPLACE FUNCTION public.test_concat() RETURNS NUMERIC AS $$
DECLARE
_yr NUMERIC (4,0);
_nxtval NUMERIC;
_str VARCHAR;
BEGIN
SELECT EXTRACT(YEAR FROM CURRENT_DATE) INTO _yr;
SELECT nextval('sequence1') INTO _nxtval;
_str := _yr::VARCHAR || _nxtval::VARCHAR;
RETURN _str::NUMERIC;
END;
$$ LANGUAGE PLPGSQL;
para el trigger que muestras creo que así podria servirte:
CREATE OR REPLACE FUNCTION sideconc."TRG_SEQ_ALUM"()
RETURNS trigger AS
$BODY$
DECLARE
var NUMERIC (4,0);
BEGIN
SELECT EXTRACT(YEAR FROM CURRENT_DATE)into var;
NEW.codigo := (var::VARCHAR || nextval('sideconc.seq_cod_alum')::VARCHAR)::NUMERIC;
Return NEW;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION sideconc."TRG_SEQ_ALUM"() OWNER TO postgres;
Saludos,
elistraus
04-08-2010, 21:31:29
Graaaacias movorack, me sirvio, arregle mi problema, muy agradecido por haberme ayudado,
no se si cierran los hilos aqui en el club delphi,,,
saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.