Hola a todos les escribo pues estoy siguiendo el manual para intentar hacer un tipo de dato definido por el usuario, y me funciona bien, el tema está es que si no cumple con determinado requisito el valor(en este caso que la cadena sea mayor que 3) no deberia insertarse el valor y entratria por ereport(ERROR... . y aunque sea menor que 3 se inserta el valor y no lanza el mensaje de error, que pudiera estar haciendo mal o que debo retornar en caso de que no cumpla el requisito necesario. El código que ando escribiendo está debajo.

Ejemplo: cuando escribo "insert into ejemplo values ('aaaaaaaa')" se inserta bien, pero si inserto "insert into ejemplo values ('a')", también se inserta y no deberia hacerse, pues el valor del largo de la cadena es menor que 3
:(




PG_MODULE_MAGIC;
Datum        f_in(PG_FUNCTION_ARGS);
Datum        f_out(PG_FUNCTION_ARGS);

PG_FUNCTION_INFO_V1(f_in);

Datum
f_in(PG_FUNCTION_ARGS)
{
    char       *texto = PG_GETARG_CSTRING(0);
    int       len;


    len = strlen(texto);





///* aqui va la validación del formato, para ver si se inserta o no ,puede ser una función externa por lo que he visto
    if (len<3) {
        ereport(ERROR,(errcode(ERRCODE_INVALID_TEXT_REPRESENTATION),
                 errmsg("invalid input syntax for new data type ."
                        )    ));


        }


    PG_RETURN_TEXT_P(cstring_to_text(texto));
}

http://www.uci.cu

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a