Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo SQL Magazine 8 - PostgreSQL Stored Procedures - Parte 2, Funções e Triggers
Artigo da Revista SQL Magazine - Edição 8.
Clique aqui para ler todos os artigos desta edição
PostgreSQL Stored Procedures - Parte 2, Funções e Triggers
Aprimeira parte deste artigo definiu o conceito de funções (utilização e tipos) e abordou a criação e o uso de funções do tipo SQL. Este artigo trata de outro tipo de função que pode ser implementada no PostgreSQL, mais conhecida como função de linguagens procedurais. Essas funções, além de executarem comandos SQL, utilizam recursos de variáveis e estruturas de controle fundamentais à qualquer linguagem procedural.
Na versão atual do PostgreSQL, temos 4 tipos de linguagens procedurais: PL/PgSQL, PL/Tcl, PL/Perl e PL/Python. Ao contrário das funções em SQL, é necessário carregar a linguagem de desenvolvimento no banco de dados como um módulo. Esse procedimento também será descrito no decorrer deste artigo.
A sintaxe da PL/PgSQL é muito semelhante à da PL/SQL do Oracle. As linguagens PL/Tcl, PL/Perl e PL/Python possuem características próprias das linguagens que herdam, e são pouco utilizadas. Em função disso, abordaremos a sintaxe de funções no PostgreSQL por meio da linguagem procedural PL/PgSQL. Assim como no artigo anterior, todos os procedimentos foram executados em ambiente Linux.
Processo de criação de Stored Procedures em PL/PgSQL
No PostgreSQL, as linguagens procedurais não funcionam como as funções em SQL, onde podemos criar diretamente uma função e, em seguida, executá-la no banco de dados. Para criarmos uma stored procedure em uma linguagem procedural PL/PgSQL, devemos primeiro carregar no banco de dados o módulo da linguagem a ser utilizada para desenvolver a função. Essa regra se aplica também a outras linguagens procedurais, como PL/Tcl, PL/Perl e PL/Python.
Vamos desenvolver nossas funções em PL/PgSQL no banco sqlmagazine criado no artigo anterior. Utilizaremos o comando createlang para carregar a linguagem PL/PgSQL nesse banco de dados. No prompt do Linux, execute o comando abaixo:
createlang –U postgres plpgsql sqlmagazine
Com este comando, carregaremos o módulo da linguagem procedural PL/PgSQL somente no banco sqlmagazine. O PostgreSQL possui um banco padrão denominado template1. Todos os databases que criamos copiam a estrutura desse banco padrão, portanto, se quisermos que a linguagem PL/PgSQL esteja disponível em todos os bancos no servidor, devemos executar o seguinte comando:
createlang –U postgres plpgsql template1
Estrutura de uma Função em PL/PGSQL
A Listagem 1 mostra a sintaxe geral para a criação de uma função em PL/PgSQL:
Listagem 1 - Sintaxe para a criação de funções
CREATE [OR REPLACE] FUNCTION nome_da_procedure(parametro1,
parametro2, ..., parametroN)
RETURNS [SETOF] tipo_dado_retornado AS ‘
DECLARE
variaveis;
BEGIN
algoritmo_da_procedure;
END;
‘ LANGUAGE ‘PLPGSQL’;
Observando a listagem 1 temos:
O comando CREATE FUNCTION: cria uma função. Para alterar ou sobrescrever uma função já existente, devemos utilizar CREATE OR REPLACE FUNCTION.
Em nome_da_procedure, temos o nome da procedure a ser criada. Aqui poderíamos mencionar o nome do Schema do qual a função faria parte. Ao omitirmos o nome do Schema, a procedure será criada sobre um Schema padrão denominado public.
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Paulo Rogério De Oliveira
Paulo Rogério De Oliveira (paulo@dbexperts.com.br) é bacharel em Ciências da Computação pela Universidade Paulista - UNIP. Possui 10 anos de experiência em linguagens de programação, banco de dados, redes e administração de servidores Linux. Atualmente trabalha com consultoria de servidores Linux e ...



