Top Qs
Linha do tempo
Chat
Contexto
Object-PL/SQL
linguagem de programação Da Wikipédia, a enciclopédia livre
Remove ads
Object-PL/SQL (Object-Procedural Language/Structured Query Language ou simplesmente O-PL/SQL) é uma metodologia de uso da linguagem procedural estendida SQL do Oracle.[1] Os itens adicionais a partir da versão 7 e outros upgrades levaram a um uso em larga escala deste banco de dados no paradigma orientado a objetos.[2]
Apesar de a sintaxe do PL/SQL ter sido inicialmente concebida semelhantemente à da Ada e à do Pascal, os avanços posteriores incluíram a possibilidade de uso do código java embutido[3] e de uma sintaxe orientada a objetos no próprio código SQL.[4]
A mixagem e uso embutido de triggers e stored procedures foi um dos pontos que levaram ao limiar da concepção do PL/SQL num paradigma OO.[5] Já a inclusão, na sintaxe SQL, de partículas no formato [classe].[objeto], bem como a implementação do objeto tipo (tipo de dado)[6] (como nas linguagens OO em geral) completou os mínimos requisitos para um mapeamento objeto-relacional numa linguagem SQL estendida sem uso de Persistence frameworks.[7]
Remove ads
Autonomia, notoriedade e importância do O-PL/SQL
A O-PSL/SQL não é somente uma versão da linguagem de programação, mas um modelo de como usá-la, que rompe totalmente com a prática anterior, o que define a autonomia do tema aqui tratado.[8] Cada versão da PL/SQL, a partir da 7, traz inovações que não podem ser tratadas como simples sub-temas da linguagem, caracterizando-se esse conjunto de mudanças como uma linguagem autônoma. Tal revolução estabelece uma fronteira entre a linguagem anterior, procedural-estruturada, e a atual, procedural-estruturada-OO. É justamente esta abordagem que confere importância ao tema e sua notoriedade é dada pelo seu uso cada vez maior.[9]
Remove ads
Confusão de objetos
Numa linguagem OO que tem como objetivo agir sobre um banco de dados, há dois conceitos diferentes chamados objeto, que não devem ser confundidos. Esta distinção é muito importante, já que ambas as significâncias são amplamente usadas. Assim, ao ler a documentação, é preciso fazer a identificação de qual definição é aplicável em cada referência ao termo.
Objetos de banco de dados são elementos que remontam ao modelo relacional ou ainda mais remotamente aos bancos de dados sequenciais e hierárquicos e que continuam presentes no banco de dados orientado a objetos. Tabelas, Triggers, colunas, índices são exemplos de alguns desses objetos,[6] que estão presentes na O-PL/SQL, e cujo valor pode coincidir com o de um objeto na noção java, mais especificamente um elemento de um conjunto (classe), cuja existência se inicia com a operação chamada instanciar.
Remove ads
PL/SQL e O-PL/SQL
PL/SQL é a linguagem SQL estendida usada pelo banco de dados Oracle.
O-PL/SQL é disponível no Oracle desde a versão 7 e no IBM DB2 desde a versão 9.7.[10]
O-PL/SQL permite definição de classes e instanciar objetos, assim, criando tipos de dados definidos por usuário, bem como criando construtores, além das stored procedures e triggers em java embutido.
Exemplo de uso da sintaxe da O-PL/SQL
Resumir
Perspectiva
Um pequeno exemplo da sintaxe da O-PL/SQL, extraída da documentação[11], além de outras fontes:
Exemplo
Um exemplo simples de object-oriented PL/SQL[12]
create or replace type base_type as object (
a number,
constructor function base_type return self as result,
member function func return number,
member procedure proc (n number)
) instantiable not final;
/
Agora, a implementação do tipo é criada. Esta implementação define como as funções do tipo e seus construtores explícitos funcionam:
create or replace type body base_type as
constructor function base_type return self as result is
begin
a:=0;
return;
end base_type;
member function func return number is
begin
return a;
end func;
member procedure proc (n number) as
begin
a:=n;
end proc;
end;
/
Estamos prontos para derivar o tipo-base. A palavra-chave para a derivação é under. O tipo derivado define um novo atributo (chamado m) e sobrescreve a função.
create or replace type deriv_type under base_type (
m number,
overriding member function func return number
);
/
Como nos casos de tipo-base, o método sobrescrito deve ser implementado no tipo derivado:
create or replace type body deriv_type as
overriding member function func return number is
begin
return m*a;
end;
end;
/
Os tipos criados podem ser instanciados e os métodos podem ser chamados:
declare
b1 base_type :=base_type();
b2 base_type :=base_type(4);
d1 deriv_type:=deriv_type(5,6);
d2 deriv_type:=deriv_type(5,6);
begin
dbms_output.put_line(b1.func);
dbms_output.put_line(b2.func);
d1.proc(4);
dbms_output.put_line(d1.func);
dbms_output.put_line(d2.func);
end;
/
Resultados:
- 0
- 4
- 24
- 30
Os tipos criados se tornam tipos reais e podem ser usados em tabelas:
create table table_base (
b base_type
);
declare
base base_type := base_type();
deriv deriv_type:= deriv_type(8,9);
begin
insert into table_base values(base);
insert into table_base values(deriv);
end;
/
select t.b.func() from table_base t;
T.B.FUNC()
Resultados:
- 0
- 72
select avg(t.b.func()) from table_base t;
AVG(T.B.FUNC())
Resultado:
- 36
Remove ads
Bibliografia
- Bennett, Mathew (2002). Programming Oracle Developer 1 ed. Indianapolis: Sams. 348 páginas. ISBN 0672321106
- Bales, Donals (2007). PL/SQL from Novice to Professional 1 ed. New York: Apress. 469 páginas. ISBN 10590598822 Verifique
|isbn=
(ajuda) - Feuerstein, Steven; Pribyl, Bill (2009). «26». Oracle PL/SQL Programming. Sebastopol: O'Reilly Media, Inc. pp. 978–0–596–51446–4. ISBN 9780596514464
- Rahayu, Wenny; Taniar, David; Pardede, Eric (2006). Object-Oriented Oracle (PDF). Hershey: IRM Press. 345 páginas. ISBN 1591406080. Consultado em 8 de setembro de 2012. Arquivado do original (PDF) em 3 de março de 2016
Remove ads
Ver também
Referências
- Lassan, Alan R., Due, Jacob Steen (13 de junho de 2000). «Experiences with Object Oriented Development in PL/SQL» (PDF). The danish National Center for IT Research. Consultado em 15 de abril de 2012
- Cunningham, Lewis. «PL/SQL Features by Release». Burleson Consulting. Consultado em 15 de abril de 2012
- «When Should you use Java Stored Procedures with an Oracle Database, what are the Drawbacks?». Stack Overflow. Consultado em 15 de abril de 2012
- «Oracle's Object-Oriented Features». etutorial.org. Consultado em 16 de abril de 2012
- Benett, 2002:144
- Shubho, Al-Farooque (8 de novembro de 2009). «Optimize Database Files and Apply Partitioning». The Code Project. Consultado em 19 de abril de 2012
- Bales, 2007:107-209
- «Use Object PL/SQL». java2s.com. Consultado em 19 de abril de 2012
- Feuerstein, 2009
- «DB2 10: Run Oracle applications on DB2 10 for Linux, UNIX, and Windows». IBM. Consultado em 20 de abril de 2012
- «Oracle Documentatio». Oracle. Consultado em 19 de abril de 2012
- «Object Oriented Oracle, example 1». René Nyffenegger's collection of things on the web. Consultado em 19 de abril de 2012
Remove ads
Nota
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads