Обсуждение: use of %TYPE

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

use of %TYPE

От
Dennis Gearon
Дата:
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

От
Stephan Szabo
Дата:
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).