Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Bases de datos > PostgreSQL
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 03/08/2010
elistraus's Avatar
elistraus elistraus is offline
Miembro
 
Join Date: Jun 2008
Posts: 32
Poder: 0
elistraus Va por buen camino
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;
Reply With Quote
  #2  
Old 04/08/2010
movorack's Avatar
[movorack] movorack is offline
Miguel A. Valero
 
Join Date: Feb 2007
Location: Bogotá - Colombia
Posts: 1,346
Poder: 22
movorack Va camino a la famamovorack Va camino a la fama
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,
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Reply With Quote
  #3  
Old 04/08/2010
elistraus's Avatar
elistraus elistraus is offline
Miembro
 
Join Date: Jun 2008
Posts: 32
Poder: 0
elistraus Va por buen camino
Talking

Graaaacias movorack, me sirvio, arregle mi problema, muy agradecido por haberme ayudado,
no se si cierran los hilos aqui en el club delphi,,,
saludos
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
problemas con concatenación MJ_23_13 SQL 2 24/04/2008 08:22
Concatenación de Cadenas...ayuda please Guadalupe .NET 0 25/05/2006 01:54
Concatenacion de integer a hora seba_cipo Varios 7 21/10/2005 14:38
Concatenacion de caracteres de distintos registros casandra Firebird e Interbase 10 17/08/2005 20:19
Concatenación y variable system xcopy mieltxo PHP 4 06/07/2005 00:08


All times are GMT +2. The time now is 21:10.


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