PLPGSQL
# PLPGSQL

A PLPGSQL ou PL/pgSQL é uma linguagem estrutural estendida da SQL que tem por objetivo auxiliar as tarefas de programação no PostgreSQL. Ela incorpora à SQL características procedurais, como os benefícios e facilidades de controle de fluxo de programas que as melhores linguagens possuem. Por exemplo loops estruturados (for, while) e controle de decisão (if then else).
PLPGSQL é uma PL/SQL significa "Procedural Language extensions to SQL", que pode ser usado em bancos de dados. O PL/SQL é a linguagem SQL com construções de programação similares a outras liguagens.

## Vantagens

Geralmente o uso de SQL Procedural traz as seguintes vantagens:
* Suporte a módulos de linguagem;
* Cursores;
* Estrutura de Seleção;
* Estrutura de Loop;
* Combinação com SQL declarativo;
* Combinação com transações;
* Tratamento de exceções;
* Suporte a escopo de variáveis;
* Suporte aos tipos primitivos, complexos e domínios ( definidos pelo usuário).

## Estruturas
### Plpgsql: estruturas de seleção

IF ... THEN IF ... THEN ... ELSE IF ... THEN ... ELSE IF IF ... THEN ... ELSIF ... THEN ... ELSE IF ... THEN ... ELSEIF ... THEN ... ELSE O bloco sempre deve fechar com END IF ;
IF condição THEN
comandos;
ELSE
comandos;
END IF;

### Plpgsql: estruturas de repetição

FOR..LOOP LOOP WHILE ... LOOP
BEGIN FOR reg IN consulta LOOP comandos END LOOP;
FOR i IN REVERSE 10..1 LOOP—comandos END LOOP;
FOR..LOOP e RECORD create or replace function exibeLinhaAluno returns boolean as $$ declare linha record ;
WHILE LOOP
WHILE (condicao_v) LOOP
declarações
END LOOP;
EXIT;
EXIT WHEN condição ;