close

PL/PgSQL

Ir para a navegação Ir para a pesquisa

PL/pgSQL (Procedural Language/PostgreSQL Structured Query Language) é uma linguagem imperativa fornecida pelo gerenciador de banco de dados PostgreSQL . Permite executar comandos SQL através de uma linguagem de comandos imperativos e o uso de funções, dando um controle muito mais automático do que comandos SQL básicos.

A partir do PL/pgSQL você pode realizar cálculos complexos e criar novos tipos de dados do usuário. Como uma verdadeira linguagem de programação , possui estruturas de controle repetitivas e condicionais, além da possibilidade de criar funções que podem ser chamadas em instruções SQL normais ou executadas em eventos de gatilho .

Uma das principais vantagens de executar a programação no servidor de banco de dados é que as consultas e o resultado não precisam ser transportados entre o cliente e o servidor , pois os dados residem no próprio servidor. Além disso, o gerenciador de banco de dados pode planejar otimizações na execução da busca e atualização de dados.

Funções escritas em PL/pgSQL aceitam argumentos e podem retornar valores do tipo básico ou do tipo complexo (por exemplo, registros, vetores, conjuntos ou mesmo tabelas), permitindo tipagem polimórfica para funções abstratas ou genéricas (referência a variáveis ​​do tipo object ) .

Exemplo de código PL/pgSQL

CREATE OR REPLACE FUNCTION call_not_interested(integer) RETURNS integer AS '
DECLARAR
  _call_id ALIAS POR $1;
  _contact_id inteiro;

COMEÇAR

  -- encontre o contato relacionado
  SELECT _contact_id INTO _contact_id FROM chamadas WHERE id = _call_id;

  -- atualizar chamadas atendidas
  UPDATE chamadas SET atendidas = true WHERE id = _call_id;

  -- atualiza not_interested nos contatos
  ATUALIZAR contatos SET not_interested = true WHERE id = _contact_id;

  RETURN _contact_id;

FIM;
'

Links externos