A visão routine_routine_usage identifica todas as funções ou procedimentos usados por outra função ou procedimento (ou pela mesma função ou procedimento), seja no corpo do SQL ou em expressões padrão de parâmetros. (Só funciona em corpos SQL não delimitados, e não em corpos delimitados ou funções em outras linguagens.) Somente será incluída uma entrada se a função usada pertencer à função de banco de dados ativa no momento. (Não existe tal restrição quanto à função que usa.)
Note que as entradas para as duas funções na visão referem-se ao “nome específico” da rotina, mesmo que os nomes das colunas sejam usados de uma forma inconsistente com outras visões do esquema de informações sobre rotinas. Isto segue o padrão SQL, embora possa ser questionado como um projeto incorreto. Veja routines para obter mais informações sobre nomes específicos.
Tabela 35.40. Colunas de routine_routine_usage
Coluna Tipo de dados Descrição |
|---|
Nome do banco de dados que contém a função utilizadora (sempre o banco de dados corrente) |
Nome do esquema que contém a função utilizadora |
O “nome específico” da função utilizadora. |
Nome do banco de dados que contém a função usada pela primeira função (sempre o banco de dados corrente) |
Nome do esquema que contém a função usada pela primeira função |
O “nome específico” da função usada pela primeira função. |
Exemplo 35.39. Exemplo do tradutor
Funções ou procedimentos usados por outra função ou procedimento (ou pela mesma função ou procedimento)
Uso do esquema de informações para mostrar todas as funções ou procedimentos usados por outra (ou a mesma) função ou procedimento, seja no corpo ou nas expressões padrão dos parâmetros.
CREATE FUNCTION hoje() RETURNS date AS $$ BEGIN RETURN CURRENT_TIMESTAMP::date; END $$ LANGUAGE plpgsql; CREATE FUNCTION COMMENT ON FUNCTION hoje IS 'Dia de hoje'; COMMENT CREATE FUNCTION dias_entre_datas ( inicio date, fim date DEFAULT hoje()) RETURNS integer AS $$ BEGIN RETURN abs(inicio - fim); END $$ LANGUAGE plpgsql; CREATE FUNCTION COMMENT ON FUNCTION dias_entre_datas IS 'Dias entre datas - padrão hoje'; COMMENT SELECT dias_entre_datas ('2026-01-01');
dias_entre_datas
------------------
123
(1 linha)
SELECT * FROM information_schema.routine_routine_usage\gx
-[ RECORD 1 ]----+----------------------- specific_catalog | cristina specific_schema | public specific_name | dias_entre_datas_34419 routine_catalog | cristina routine_schema | public routine_name | hoje_34418