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.
Posted by Bruno Vieira to ZeroGlosa (2013-11-07 19:51)