Estou usando o postgresql 9.3. Se eu quiser adicionar as etapas a seguir e chamá-las como rotina, seria melhor usar uma função ou procedimento armazenado?
Meus passos básicos são:
RENAME TABLE FOOBAR_1234.table1_org TO FOOBAR_1234.table1_old;
DELETE FOOBAR_1234.table1_old WHERE 1=1;
RENAME TABLE FOOBAR_1234.table1 TO FOOBAR_1234.table1_org;
O que eu também preciso é a flexibilidade para parametrizar o ID como em 1234
qualquer ID, exemplo 5678
.
Se você tiver um exemplo, também seria útil.
Não existe um procedimento armazenado no PostgreSQL. Tudo o que o PostgreSQL tem são funções SQL que podem ser chamadas definidas em várias linguagens -
LANGUAGE sql
,LANGUAGE plpgsql
,LANGUAGE plperl
, etc.Além disso, não há nenhum
RENAME TABLE
comando. Você querALTER TABLE ... RENAME TO ...
.Este exemplo particular deve ser escrito em PL/PgSQL usando
EXECUTE
porque depende de SQL dinâmico. Veja os inúmeros exemplos existentes no Stack Overflow de uso de PL/pgSQLEXECUTE
. Algo como uma função PL/PgSQL com:Editar: OK, exemplo mais completo: