Comando Execute para Dinamismo no Postgresql

Posted Over 10 years ago. Visible to the public.

Basicamente: Usar sql e concatenação de texto para construir outras sqls, e então executá-las no banco com o auxílio da função EXECUTE (disponível apenas dentro de function's ou procedure's).

O exemplo abaixo fala por si só.
Criação de uma função simples:

CREATE OR REPLACE FUNCTION qtd(nomeTabela text) RETURNS integer LANGUAGE plpgsql AS $$
DECLARE
    resultado integer;
BEGIN
    EXECUTE 'SELECT count(1) FROM ' || nomeTabela INTO resultado;
    RETURN resultado;
END; $$;

Uso da função:

SELECT qtd('tabela_estoque');
SELECT qtd('tabela_produtos');

Outro uso exemplo:

CREATE OR REPLACE FUNCTION dropConstraint(nomeTabela text, nomeConstraint text) RETURNS void LANGUAGE plpgsql AS $$
BEGIN
    EXECUTE 'ALTER TABLE ' || nomeTabela || ' DROP CONSTRAINT ' || nomeConstraint;
END; $$;

A partir dai, é sua necessidade e capacidade de construção de functions para fazer o que você precisa.

Bruno Vieira
Last edit
Over 9 years ago
Bruno Vieira
Posted by Bruno Vieira to ZeroGlosa (2013-11-07 19:51)