35.45. routines #

A visão routines contém todas as funções e procedimentos no banco de dados corrente. São mostradas apenas as funções e procedimentos que o usuário corrente tem acesso (por ser o dono, ou por ter algum privilégio).

Tabela 35.43. Colunas de routines

Coluna Tipo de dados

Descrição

specific_catalog sql_identifier

Nome do banco de dados que contém a função (sempre o banco de dados corrente)

specific_schema sql_identifier

Nome do esquema que contém a função

specific_name sql_identifier

O nome específico da função. Este é o nome que identifica unicamente a função no esquema, mesmo se o nome real da função estiver sobrecarregado. O formato do nome específico não está definido, deve ser usado apenas para compará-lo com outras instâncias de nomes específicos de rotinas.

routine_catalog sql_identifier

Nome do banco de dados que contém a função (sempre o banco de dados corrente)

routine_schema sql_identifier

Nome do esquema que contém a função

routine_name sql_identifier

Nome da função (pode haver duplicidade em caso de sobrecarga)

routine_type character_data

FUNCTION para uma função, ou PROCEDURE para um procedimento

module_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

module_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

module_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

udt_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

udt_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

udt_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

data_type character_data

Retorna o tipo de dados da função, se for um tipo de dados integrado, ou ARRAY se for alguma matriz (neste caso, veja a visão element_types, senão USER-DEFINED (neste caso, o tipo de dados é identificado pela coluna type_udt_name e colunas associadas). Nula para um procedimento.

character_maximum_length cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

character_octet_length cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

character_set_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

character_set_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

collation_catalog sql_identifier

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

collation_schema sql_identifier

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

collation_name sql_identifier

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

numeric_precision cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

numeric_precision_radix cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

numeric_scale cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

datetime_precision cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

interval_type character_data

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

interval_precision cardinal_number

Sempre nula, porque esta informação não aplica a tipos de dados retornados no PostgreSQL

type_udt_catalog sql_identifier

Nome do banco de dados onde o tipo de dados retornado pela função está definido (sempre o banco de dados corrente). Nula para procedimento.

type_udt_schema sql_identifier

Nome do esquema onde o tipo de dados retornado pela função está definido. Nula para procedimento.

type_udt_name sql_identifier

Nome do tipo de dados retornado pela função. Nulo para um procedimento.

scope_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

scope_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

scope_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

maximum_cardinality cardinal_number

Sempre nula, porque as matrizes sempre têm cardinalidade máxima ilimitada no PostgreSQL

dtd_identifier sql_identifier

Identificador do descritor de tipo de dados do tipo de dados retornado pela função, único entre os descritores de tipo de dados pertencentes à função. É usado principalmente para realizar junções com outras instâncias desses identificadores. (O formato específico do identificador não está definido, não havendo garantia de que permanecerá o mesmo nas versões futuras.)

routine_body character_data

Se a função for uma função SQL, então SQL, senão EXTERNAL.

routine_definition character_data

O código-fonte da função (nula se a função não pertencer à função de banco de dados ativa no momento). (Segundo o padrão SQL, esta coluna só é aplicável se routine_body for SQL, mas no PostgreSQL ela irá conter qualquer código-fonte que tenha sido especificado quando a função foi criada.)

external_name character_data

Se esta função for uma função C, então o nome externo (símbolo de ligação) da função; senão nula. (Isto resulta no mesmo valor mostrado em routine_definition.)

external_language character_data

A linguagem em que a função está escrita

parameter_style character_data

Sempre GENERAL. (O padrão SQL define outros estilos de parâmetros, não disponíveis no PostgreSQL.)

is_deterministic yes_or_no

Se a função for declarada imutável (chamada de determinística no padrão SQL), então YES, caso contrário NO. (Não é possível consultar os outros níveis de volatilidade disponíveis no PostgreSQL por meio do esquema de informações.)

sql_data_access character_data

Sempre MODIFIES, significando que a função possivelmente modifica os dados SQL. Esta informação não é útil para o PostgreSQL.

is_null_call yes_or_no

Se a função retornar automaticamente nulo se algum de seus argumentos for nulo, então YES, caso contrário NO. Nula para um procedimento.

sql_path character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

schema_level_routine yes_or_no

Sempre YES (O oposto seria um método com tipo de dados definido pelo usuário, que é uma funcionalidade não disponível no PostgreSQL.)

max_dynamic_result_sets cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

is_user_defined_cast yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

is_implicitly_invocable yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

security_type character_data

Se a função for executada com os privilégios do usuário corrente, então INVOKER, se a função for executada com os privilégios do usuário que a definiu, então DEFINER.

to_sql_specific_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

to_sql_specific_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

to_sql_specific_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

as_locator yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

created time_stamp

Aplica-se a uma funcionalidade não disponível no PostgreSQL

last_altered time_stamp

Aplica-se a uma funcionalidade não disponível no PostgreSQL

new_savepoint_level yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

is_udt_dependent yes_or_no

No momento sempre NO. A alternativa YES aplica-se a uma funcionalidade não disponível no PostgreSQL.

result_cast_from_data_type character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_as_locator yes_or_no

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_char_max_length cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_char_octet_length cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_char_set_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_char_set_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_char_set_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_collation_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_collation_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_collation_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_numeric_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_numeric_precision_radix cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_numeric_scale cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_datetime_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_interval_type character_data

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_interval_precision cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_type_udt_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_type_udt_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_type_udt_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_scope_catalog sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_scope_schema sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_scope_name sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_maximum_cardinality cardinal_number

Aplica-se a uma funcionalidade não disponível no PostgreSQL

result_cast_dtd_identifier sql_identifier

Aplica-se a uma funcionalidade não disponível no PostgreSQL


Exemplo 35.41. Exemplo do tradutor

Informações sobre função

Uso do esquema de informações para mostrar as informações sobre a função maior_1000 no banco de dados cristina da usuária cristina. As colunas com valores nulo foram omitdas do resultado. Veja a criação da função maior_1000 em Exemplo da visão check_constraint_routine_usage.

SELECT *
FROM information_schema.routines
WHERE routine_name = 'maior_1000'\gx

-[ RECORD 1 ]-----------------------+-------------------------
specific_catalog                    | cristina
specific_schema                     | public
specific_name                       | maior_1000_34234
routine_catalog                     | cristina
routine_schema                      | public
routine_name                        | maior_1000
routine_type                        | FUNCTION
data_type                           | boolean
type_udt_catalog                    | cristina
type_udt_schema                     | pg_catalog
type_udt_name                       | bool
dtd_identifier                      | 0
routine_body                        | EXTERNAL
routine_definition                  |                         +
                                    | BEGIN                   +
                                    |    IF @valor > 1000 THEN+
                                    |       RETURN true;      +
                                    |    ELSE                 +
                                    |       RETURN false;     +
                                    |    END IF;              +
                                    | END                     +
                                    |
external_language                   | PLPGSQL
parameter_style                     | GENERAL
is_deterministic                    | NO
sql_data_access                     | MODIFIES
is_null_call                        | NO
schema_level_routine                | YES
max_dynamic_result_sets             | 0
security_type                       | INVOKER
as_locator                          | NO
is_udt_dependent                    | NO