Thread: use of %TYPE

use of %TYPE

From
Dennis Gearon
Date:
Can I use %TYPE in a function definition a la:
=============================================================================
CREATE OR REPLACE FUNCTION add_usr ( Usrs.first_name%TYPE,
                                     Usrs.middle_name%TYPE,
                                     Usrs.sur_name%TYPE,
                                     Usrs.sur_name_extra%TYPE,
                                     Gens.gen%TYPE,
                                     Emails.email%TYPE,
                                     UsrEmailTypes.usr_email_type%TYPE )
RETURNS BOOLEAN AS '
    DECLARE
    var_first_name      ALIAS FOR $1;
    var_middle_name     ALIAS FOR $2;
    var_sur_name        ALIAS FOR $3;
    var_sur_name_extra  ALIAS FOR $4;
    var_gen             ALIAS FOR $5;
    var_email_addr      ALIAS FOR $6;
    var_email_addr_type ALIAS FOR $7;
    BEGIN
        RETURN ''f'';
    END;
' LANGUAGE 'plpgsql';

=============================================================================

Also, does pgsql keep case in the table and column names? phpPgAdmin shows no case on tables I
created with case.





Re: use of %TYPE

From
Stephan Szabo
Date:
On Thu, 27 Feb 2003, Dennis Gearon wrote:

> Can I use %TYPE in a function definition a la:
> =============================================================================
> CREATE OR REPLACE FUNCTION add_usr ( Usrs.first_name%TYPE,
>                                      Usrs.middle_name%TYPE,
>                                      Usrs.sur_name%TYPE,
>                                      Usrs.sur_name_extra%TYPE,
>                                      Gens.gen%TYPE,
>                                      Emails.email%TYPE,
>                                      UsrEmailTypes.usr_email_type%TYPE )
> RETURNS BOOLEAN AS '
>     DECLARE
>     var_first_name      ALIAS FOR $1;
>     var_middle_name     ALIAS FOR $2;
>     var_sur_name        ALIAS FOR $3;
>     var_sur_name_extra  ALIAS FOR $4;
>     var_gen             ALIAS FOR $5;
>     var_email_addr      ALIAS FOR $6;
>     var_email_addr_type ALIAS FOR $7;
>     BEGIN
>         RETURN ''f'';
>     END;
> ' LANGUAGE 'plpgsql';
>
> =============================================================================

It works for me with current sources (after making tables with those
columns), although I believe the conversion is done immediately (given I
get notices about conversions to the column types), which would
presumably mean that it would not follow alter commands.

> Also, does pgsql keep case in the table and column names? phpPgAdmin
> shows no case on tables I created with case.

If you don't double quote the names they're case insensitive and in this
case forced to lower case.  If you double quote the name it keeps case and
is case sensitive, but you have to pretty much always refer to them with
the double quotes (unless the identifier was already in lower case).