Bogos

setembro 25, 2008

Package SQL

Filed under: SQL — Tags:, , , , , , , , , — Bogos @ 11:07 am

Vamos conversar um pouco sobre as packages do SQL.
A princípio, o que são packages?
Packages são, como o próprio nome já diz, pacotes. São pacotes de funções (functions) e procedures, fazendo com que suas funções e procedures fiquem agrupadas de forma organizada. Pense num sistema com 1000 procedures e 1000 funções. Você abre a árvore de funções e a de procedures no schema do banco e se depara com aquela pancada de nomes. Agora imagine tudo isso numa árvore Package. Abrindo essa árvore temos várias packages (o que será bem menos de 1000) e nelas estão suas funções e procedures todas organizadas.

Bom, agora que você já sabe o que é uma package (ou não…), vamos falar de sua estrutura. Uma package é composta por um cabeçalho onde são definidos todos os cabeçalhos das funções, cada um indicando o tipo de retorno de cada uma, e os cabeçalhos das procedures (lembrando que procedure não contém retorno).
Após isso, criamos um PACKAGE BODY, que nada mais é do que o corpo da package com as funções e procedures propriamente ditos.
Ok, vamos à sintaxe:

CREATE OR REPLACE PACKAGE nome_do_pacote AS

FUNCTION funcao1(parametro1 NUMBER, parametro2 VARCHAR2) RETURN VARCHAR2;
FUNCTION funcao2() RETURN NUMBER;
PROCEDURE teste(parametro BOOLEAN);

END nome_do_pacote;
/

Tendo definido o cabeçalho da package com os cabeçalhos das funções, podemos ir para o BODY da package:

CREATE OR REPLACE PACKAGE BODY nome_do_pacote IS

FUNCTION funcao1(parametro1 NUMBER, parametro2 VARCHAR2) RETURN VARCHAR2 AS
–declaração de variáveis aqui
BEGIN
–corpo da função
RETURN ‘bogos’
END;

FUNCTION funcao2() RETURN NUMBER AS
–declaração de variáveis
BEGIN
–corpo da função
RETURN 1
END;

PROCEDURE teste(parametro BOOLEAN) IS
–declaração de variaveis
BEGIN
–corpo da procedure
NULL;
END;

END nome_do_pacote;
/

Vualá, temos uma package com duas funções e uma procedure prontinha.
Para usar alguma função da package é simples, vamos lá:

SELECT nome_do_pacote.funcao1(2,’teste’) FROM dual;
SELECT nome_do_pacote.funcao2() FROM dual;

Para chamar uma procedure, utilizamos:

EXECUTE nome_do_pacote.teste(true);

Caso a procedure não tenha parâmetros, basta chamá-la normamente sem (), ou seja:

EXECUTE nome_do_pacote.teste;

Note na chamada da funcao2 no segundo SELECT do exemplo acima, a função sem parâmetro é necessariamente com o uso dos parênteses mesmo sem parâmetros, diferentemente da procedure.

Bom, é isso aí! Espero ter aprendido ou relembrado de algo na sua busca!
Abraços!

Anúncios

Deixe um comentário »

Nenhum comentário ainda.

RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s

Crie um website ou blog gratuito no WordPress.com.

%d blogueiros gostam disto: