Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > PostgreSQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2010
Avatar de elistraus
elistraus elistraus is offline
Miembro
 
Registrado: 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;
Responder Con Cita
  #2  
Antiguo 04-08-2010
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
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
Responder Con Cita
  #3  
Antiguo 04-08-2010
Avatar de elistraus
elistraus elistraus is offline
Miembro
 
Registrado: 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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
problemas con concatenación MJ_23_13 SQL 2 24-04-2008 08:22:07
Concatenación de Cadenas...ayuda please Guadalupe .NET 0 25-05-2006 01:54:58
Concatenacion de integer a hora seba_cipo Varios 7 21-10-2005 14:38:07
Concatenacion de caracteres de distintos registros casandra Firebird e Interbase 10 17-08-2005 20:19:03
Concatenación y variable system xcopy mieltxo PHP 4 06-07-2005 00:08:18


La franja horaria es GMT +2. Ahora son las 10:04:51.


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
Copyright 1996-2007 Club Delphi