Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PostgreSQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=42)
-   -   Problema de concatenacion (https://www.clubdelphi.com/foros/showthread.php?t=69232)

elistraus 03-08-2010 17:05:08

Problema de concatenacion
 
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

Código SQL [-]
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:

Código SQL [-]
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:

Código SQL [-]
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


La franja horaria es GMT +2. Ahora son las 00:01:33.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi