DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou 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.

capaSQL12.JPG

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."

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL
ou 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 ...
O que você achou deste post?

    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03