Обсуждение: Help with "empty()"

Поиск
Список
Период
Сортировка

Help with "empty()"

От
Alan Wayne
Дата:
Hi!

In doing table validation, I have often used the
foxpro function "empty()" which returns .t. if the
enclosed entity is empty. i.e., if boolean .f. then
empty = .t.. If number 0, then empty = .t., and if a
blank string, then empty = .t.

I didn't see anyother way to mimic this behavior then
what I wrote below, is there a better way????

Please help, suggestions are appreciated!
Cheers,
ajw

    CREATE FUNCTION zzipcode_validate_fields() RETURNS
opaque AS '
        BEGIN
            IF NEW.izipcode ISNULL THEN
                RAISE EXCEPTION ''zipcode is null.'' ;
            ELSE
                IF char_length( trim(both from NEW.izipcode)) < 9
THEN
                    RAISE EXCEPTION ''zipcode less-then 9-digits.'' ;
                END IF;
            END IF;

            IF NEW.cstate ISNULL THEN
                RAISE EXCEPTION ''state is null.'' ;
            ELSE
                IF char_length( trim(both from NEW.cstate))=0 THEN
                    RAISE EXCEPTION ''state is empty string.'';
                END IF;
            END IF;

            IF NEW.ccity ISNULL THEN
                RAISE EXCEPTION ''city is null.'';
            ELSE
                IF char_length( trim(both from NEW.ccity)) = 0
THEN
                    RAISE EXCEPTION ''city is empty string.'' ;
                END IF;
            END IF;

            NEW.cstate := upper(NEW.cstate);
            NEW.ccity := upper(NEW.ccity);
            RETURN NEW;
            END;
    'LANGUAGE 'plpgsql';

    CREATE TRIGGER zzipcode_validate BEFORE INSERT OR
UPDATE ON zzipcode
        FOR EACH ROW EXECUTE PROCEDURE
zzipcode_validate_fields();


__________________________________________________
Do You Yahoo!?
LAUNCH - Your Yahoo! Music Experience
http://launch.yahoo.com

Re: Help with "empty()"

От
Stephan Szabo
Дата:
> In doing table validation, I have often used the
> foxpro function "empty()" which returns .t. if the
> enclosed entity is empty. i.e., if boolean .f. then
> empty = .t.. If number 0, then empty = .t., and if a
> blank string, then empty = .t.
>
> I didn't see anyother way to mimic this behavior then
> what I wrote below, is there a better way????

I'd have suggested writing empty functions for various
types, empty(boolean), empty(int4), empty(float8),
empty(text) and using those.  You could probably even
just do them as sql functions.


Re: Help with "empty()"

От
"Joel Burton"
Дата:
> -----Original Message-----
> From: pgsql-general-owner@postgresql.org
> [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Stephan Szabo
> Sent: Friday, May 24, 2002 12:15 AM
> To: Alan Wayne
> Cc: Jean-Michel POURE; pgsql-general
> Subject: Re: [GENERAL] Help with "empty()"
>
> I'd have suggested writing empty functions for various
> types, empty(boolean), empty(int4), empty(float8),
> empty(text) and using those.  You could probably even
> just do them as sql functions.

Yep. Though, since they're compiled, plpgsql functions are faster than SQL
functions. Don't forget to mark them as isCachable, too.

- J.

Joel BURTON | joel@joelburton.com | joelburton.com | aim: wjoelburton
Knowledge Management & Technology Consultant