artigo SQL Magazine 30 - PL/SQL 10g
Artigo da Revista SQL Magazine -Edição 30.
Atenção: por essa edição ser muito antiga não há arquivo PDF para download.
Os artigos dessa edição estão disponíveis somente através do formato HTML.
PL/SQL 10g: o que mudou?
O PL/SQL é a linguagem de programação padrão do banco de dados Oracle desde a versão 6.0 do produto, lançada em 1991. Ela é altamente integrada ao banco de dados e aos comandos SQL o que facilita o desenvolvimento de módulos estritamentevoltados para a manipulação de dados. Muitos podem argumentar que isso pode ser feito pelo SQL, mas a intenção de criar uma linguagem de programação que estendesse esse padrão e permitisse utilizar estruturas condicionais e de repetição ampliaram a utilização do banco de dados. Ao invés de enviar diversas requisições ao banco de dados e trabalhar cada uma das linhas no front-end, as aplicações podem simplesmente requisitar ao banco de dados que retorne a informação já trabalhada.
Significativos avanços foram feitos a partir da versão 2.3 do PL/SQL (que foi lançada com a versão 7.3 do banco de dados). A partir da versão 8.0 do banco de dados foi iniciado o suporte à orientação a objetos, processo que atingiu um alto nível de aderência a este padrão na versão 10g. Na versão 8.1 (ou 8i) a empresa começou a adotar cada vez mais os padrões do SQL e isso acabou refletindo também no PL/SQL. O Java passou a ser utilizado no banco de dados e apareceu (inicialmente) como concorrente do PL/SQL. Na versão 9i é ampliado o suporte a caracteres internacionais, herança entre objetos, compilação nativa do código PL/SQL em C e acesso a documentos XML.
Muito já se ouviu falar que o PL/SQL estaria cedendo lugar ao Java. Esta sim seria a linguagem de programação oficial do banco de dados Oracle em breve. Contudo, apesar do PL/SQL ser uma linguagem criada para ser procedural, a Oracle tem investido muito para deixá-la com um formato orientado a objeto. Novos pacotes têm sido agregados ao PL/SQL o que permite resolver cada vez mais problemas com o uso da linguagem. Este artigo não pretende sequer iniciar a discussão Java x PL/SQL e sim mostrar o que a Oracle fez nas mais recentes versões da linguagem.
Devido a grande parte das implementações do banco de dados Oracle estar em versões anteriores a atual (10gR2), vou focar este artigo nas principais modificações implementadas pela Oracle na versão 10gR1 e R2. Como o leitor verá, não é uma lista extensa, mas poderá auxiliá-lo em algumas situações do dia-a-dia.
Devo esclarecer que vou me restringir às mudanças relacionadas ao PL/SQL e não à linguagem SQL. Muitas das modificações do SQL acabam tendo reflexo no PL/SQL, mas nem por isso serão citadas neste artigo.
Desempenho
Com a nova versão do banco de dados, os usuários podem esperar um desempenho pelo menos duas vezes mais rápido do que a versão 9i e três vezes mais rápido que na versão 8i. Note que desde a versão anterior já havia a possibilidade de utilizar a compilação nativa onde o código é convertido para C durante a compilação. Com isso, a execução dos módulos PL/SQL chega a ser 30% mais rápida do que quando o código é interpretado.
Boa parte do interpretador foi reescrita na versão 10g. Com isso, foram otimizados diversos recursos da linguagem. Cálculos desnecessários foram eliminados e tornou-se possível determinar quando duas expressões são semelhantes (ou utilizam o mesmo caminho) ainda que não estejam escritas da mesma forma.
Um novo parâmetro (PLSQL_OPTIMIZE_LEVEL) foi criado para que o usuário escolha o comportamento do compilador. Pode assumir valores de zero, um ou dois (0, 1 ou 2), sendo que zero (0) é o mesmo que deixar como era antes da versão 10g e dois (2) otimizar ao máximo a compilação com natural queda no desempenho durante este processo (compilações mais longas).
Tipos de dados
Baseado no padrão definido na IEEE 754, a Oracle acrescentou dois novos tipos de dados no PL/SQL 10g: BINARY_ FLOAT e BINARY_DOUBLE. Com isso, as operações que envolvem dados numéricos armazenados em ponto flutuante ocuparão menos espaço e serão executadas mais rapidamente do que se o fosse utilizado o NUMBER (Listagem 1).
Funções numéricas como ABS, CEIL e ACOS, e de agregação, como AVG, MIN e MAX, podem manipular estes novos tipos de dados. No 10gR2, o PLS_INTEGER, que continua sendo a melhor opção para trabalhar com números inteiros, teve o limite aumentado para o intervalo entre -2147483648 e 2147483647.
Listagem 1. " [...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo