From: | Mariano Reingart <reingart(at)gmail(dot)com> |
---|---|
To: | Ignacio Balcarce <ignacio(dot)balcarce(at)vivatia(dot)com> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X |
Date: | 2010-04-06 19:42:36 |
Message-ID: | l2w5aebd8251004061242o6964ac66pe3549f22a24376e8@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
2010/4/6 Ignacio Balcarce <ignacio(dot)balcarce(at)vivatia(dot)com>:
> Barbaro, ahora me cierra un poco mas. Gracias por tu ayuda. El script quedo
> de esta manera:
>
> CREATE OR REPLACE FUNCTION THUBAN_SP_GENERATEID() RETURNS VARCHAR
> AS $$
> DECLARE
> item_id VARCHAR;
> id INT8;
> BEGIN
> IF (SELECT max(seq_id) FROM thuban_seq
> WHERE seq_id LIKE (to_char(now() + '1 day'::interval,
> 'YYYYMMDD') || '%')) IS NOT NULL
>
> THEN
> SELECT max(seq_id) INTO
> item_id
> FROM thuban_seq
> WHERE seq_id LIKE
> (to_char(now() + '1 day'::interval, 'YYYYMMDD') || '%');
>
> id := substr(item_id, 9,
> length(item_id)-9)::INT8;
>
> ELSE
> id:= 00000000;
> END IF;
>
> INSERT INTO thuban_seq(seq_id) VALUES (to_char(now(),'YYYYMMDD') ||
> (id+1)) RETURNING seq_id INTO item_id;
>
> RETURN item_id;
>
> END;
> $$ LANGUAGE plpgsql;
>
Primero, para simplificar, podés hacer el SELECT max(seq_id) INTO id
afuera, y luego el IF id IS NOT NULL (admás, en el IF preguntas + '1
day'::interval y abajo consultas para el día de hoy, por eso calculo
que no lo encuentra).
Despues, convertí el id con to_char para que conserve los 0 a la izquierda.
Por último, te recomiendo usar los mensajes del servidor de PostgreSQL
para informar el valor calculado (por ej):
RAISE NOTICE 'El ID calculado es %', id;
Así te imprime esos mensajes para facilitar el seguimiento y depuración.
Sds
Mariano Reingart
http://www.sistemasagiles.com.ar
http://reingart.blogspot.com
From | Date | Subject | |
---|---|---|---|
Next Message | Ignacio Balcarce | 2010-04-06 19:59:42 | RE: MSSQL to PostgreSQL - Problema intentando generar ID de modo YYYYMMDD0000000X |
Previous Message | Miguel Rodríguez Penabad | 2010-04-06 19:36:32 | Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Es posible recuperar una base de datos después de hacer "drop database"? |