From: | Luis Rodrigo Gallardo Cruz <rodrigo(at)nul-unu(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Atrapar el error de un cast. |
Date: | 2006-03-23 19:59:04 |
Message-ID: | 20060323195904.GF3116@mail.interservice.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola.
Tengo una tabla en la que uno de los campos es el RFC de una
organización. Necesito obtener la fecha de inicio de actividades.
Para los que no son de México, el RFC es una clave que consta de
<letras>YYMMDD<cosas>, en dónde YYMMDD especifica la fecha esa que
necesito.
La siguiente función extrae la fecha correctamente:
CREATE OR REPLACE FUNCTION rfc2fecha(text) RETURNS date
IMMUTABLE STRICT AS '
SELECT substring($1 from ''^[A-Z]+([0-9]{6})'')::date;
' LANGUAGE 'SQL' ;
Desafortunadamente tengo que lidiar con datos 'malos' en la base, que
traen un RFC inventado que no especifica una fecha válida (p. ej.
VCC974567A8I). Cuando uso la función de arriba y hago
un select sobre toda la tabla el select completo falla por el intento de
conversión de datos.
SELECT rfc2fecha(rfc) FROM organizacion;
ERROR: date/time field value out of range: "057843"
HINT: Perhaps you need a different "datestyle" setting.
CONTEXT: SQL function "rfc2fecha" statement 1
La pregunta:
¿Hay alguna forma de, dentro de una función SQL o PLPGSQL, capturar el
error y regresar algún valor de mi elección (null, por ejemplo)?
--
Rodrigo Gallardo PGP Key ID: ADC9BC28
Fingerprint: 7C81 E60C 442E 8FBC D975 2F49 0199 8318 ADC9 BC28
http://www.nul-unu.com http://www.nul-unu.com/blogs/elucubrando
From | Date | Subject | |
---|---|---|---|
Next Message | Nain Zuñiga Porto | 2006-03-23 20:03:08 | De baja en la Lista |
Previous Message | Alvaro Herrera | 2006-03-23 19:51:05 | Re: insert into plpython |