Melhorando o desempenho dos aplicativos

Por Sue Harper

Gerencie e ajuste aplicativos Oracle Application Express com o Oracle SQL Developer.

O Oracle SQL Developer fornece recursos para pesquisar aplicativos criados com o Oracle Application Express e trabalhar com eles. Esta coluna mostra como os desenvolvedores e DBAs podem usar o Oracle SQL Developer para examinar e ajustar código do Oracle Application Express. Você aprenderá a: 

  • Usar a interface do Oracle SQL Developer para pesquisar e examinar código no Oracle Application Express rapidamente. Essa interface lhe permite ver regiões nos aplicativos Oracle Application Express e ver o código SQL e PL/SQL dentro dessas regiões.  
  • Use os recursos de refatoração de código do Oracle SQL Developer para converter blocos PL/SQL anônimos criados no Oracle Application Express em procedimentos armazenados compilados. Os blocos anônimos são compilados em tempo de execução, para que você possa melhorar o desempenho dos aplicativos substituindo-os por PL/SQL compilado.

Os exemplos desta coluna requerem o Oracle SQL Developer 1.5.0 ou superior e o Oracle Application Express 3.0.1 ou superior. (Observe que não é possível seguir os exemplos na versão hospedada do Oracle Application Express no apex.oracle.com .) Você também precisa de acesso a uma versão não modificada do aplicativo de amostra em um workspace do Oracle Application Express associado com o esquema HR de amostra disponível com a instalação do banco de dados padrão. O aplicativo de amostra é instalado automaticamente quando você cria um workspace do Oracle Application Express.

Para começar

Inicie o Oracle SQL Developer, crie uma conexão de banco de dados para o esquema HR e conecte. (Para ver informações detalhadas sobre como criar uma conexão, siga o link para “ Creating a Database Connection ” em “Próximos passos” ou vejaMaking Database Connections ”, na edição de maio/junho de 2008 da Oracle Magazine.) No navegador Connections, encontre e expanda o nó Application Express para o esquema HR. Você deverá ver o aplicativo de amostra no nó expandido.

Gerenciando e pesquisando aplicativos do Oracle Application Express

Clique com o botão direito em Sample Application no navegador Connections para exibir o menu de contexto. Como se pode ver na Figura 1, você pode executar tarefas de gerenciamento como renomeação, importação ou implantação do aplicativo.

 

figure 1
Figura 1: gerenciando aplicativos do Oracle Application Express no Oracle SQL Developer

Ao selecionar Sample Application, uma série de guias ou editores de tela associados ao aplicativo são abertos na janela principal. (Se isso não ocorreu, clique duas vezes para abrir a tela. O comportamento do clique único e do clique duplo é regido por uma preferência. Para mudá-la, expanda a árvore do banco de dados e selecione Advanced Parameters.) Os editores de tela descrevem os objetos gerais definidos dentro do aplicativo, como o número de páginas ou listas de valores (LOVs). A guia SQL permite examinar o código completo de todo o aplicativo.

Selecione a guia LOVs para ver uma lista de todas as LOVs do aplicativo. Selecione qualquer LOV da lista para ver seus detalhes. Se a LOV for estática, o detalhe será exibido na guia Static Values abaixo. Se for dinâmica, o detalhe será exibido na guia Query.

Embora não seja possível atualizar valores da LOV no Oracle SQL Developer, você pode usar as informações exibidas na guia LOVs para determinar se vão ser atualizadas no Oracle Application Express.

Expanda o nó Sample Application no navegador Connections e selecione 1. Oracle Sample Application, que é a página 1 do aplicativo. Você pode examinar todos os recursos da página, incluindo itens e botões, alternando entre as telas. Pode-se ver que a página 1 tem dois itens ocultos e nenhum botão. Selecione a guia Regions; existem quatro regiões disponíveis, cada uma com uma origem. Essa origem é a mais interessante para explorar, particularmente quando contém instruções SQL ou PL/SQL.

No nó Sample Application no navegador Connections, selecione 7. Add/Modify Customers and the Orders for this Customer report.

Esse código com um certo grau de envolvimento seleciona colunas para diversas tabelas. Clique duas vezes no código para chamar o botão de edição que aparece à direita da seleção e clique nele. Copie o código SQL na janela de edição, clique em Cancel e cole o código em uma planilha SQL em branco para o usuário HR. Clique em qualquer lugar do código SQL na planilha, clique no botão Execute Explain Plan (ou pressione F6) e examine o resultado.

Após ajustar ou corrigir o código no Oracle SQL Developer, você pode substituir o código original no aplicativo do Oracle Application Express. No próximo exercício, você examinará a fundo uma parte do PL/SQL, o modificará e substituirá o código no aplicativo.

Refatorando blocos anônimos

Sempre que possível, é melhor que os aplicativos chamem código PL/SQL compilado. Se seu aplicativo está cheio de código não compilado, os pequenos acertos no desempenho resultantes da compilação de tempo de execução podem juntos causar um impacto significativo.

Selecione o nó 14. Place Order no navegador Connections. Clique no editor de telas Regions. Agora clique duas vezes na origem da região Order Header, que é uma origem do tipo PL/SQL. Clique no botão de edição e selecione e copie o bloco anônimo inteiro. Clique em Cancel e cole o código em uma planilha SQL em branco.

Pressione F5 para executar o script. A janela Script Output exibe o seguinte: 

Bind Variable “P14_ORDER_ID” is 
NOT DECLARED
anonymous block completed

Realmente, o código contém P14_ORDER_ID. O código PL/SQL espera um parâmetro, portanto é necessário refatorá-lo para corrigir o erro, usando as seguintes etapas:

1. Selecione o bloco anônimo do PL/SQL na planilha SQL.

2. Clique com o botão direito do mouse para chamar o menu de conteúdo e selecione Refactoring -> Extract Procedure.

3. Na caixa de diálogo, selecione a opção Stored e dê ao novo procedimento o nome PLACE_ORDER. Clique em OK.

Uma nova janela é exibida mostrando a sintaxe para criação do procedimento PL/SQL. Lembre-se de que você ainda precisa levar o parâmetro em consideração. Você poderia fazer as atualizações necessárias aqui, mas utilizará o editor PL/SQL em vez disso.

4. Clique em Yes para fechar a janela

5. No navegador Connections, selecione o nó Procedures para o usuário HR. Clique com o botão direito do mouse e expanda o nó. Você verá o procedimento PLACE_ORDER.

6. Clique duas vezes no procedimento PLACE_ORDER para abrir o editor de PL/SQL. (A primeira guia é somente leitura e a segunda é o editor de código.) Selecione o editor e clique no botão Compile. O código destaca os erros e, como era de se esperar, :P14_ORDER_ID está realçado.

7. Modifique o procedimento para aceitar um parâmetro para P14_ORDER_ID, como está mostrado aqui nas partes em itálico das primeiras linhas: 

create or replace
procedure place_order (
                                p14_order_id number) as
begin
for x in (select c.cust_first_name, 
c.cust_last_name, cust_street_address1, cust_street_address2, cust_city, 
cust_state, cust_postal_code 
from demo_customers c, demo_orders o
where c.customer_id = o.customer_id 
and o.order_id = P14_ORDER_ID)
loop
                            

Observe também que os dois-pontos que precedem P14_ORDER_ID foram removidos.

8. Clique no botão Compile. O destaque do erro deverá desaparecer.

Atualizando seu aplicativo

Agora você está pronto para atualizar o código da página 14 no Oracle Application Express para usar o procedimento armazenado que acabou de compilar. Chame o Oracle Application Express e efetue login como HR. Clique em Application Builder e clique duas vezes em Sample Application para exibir as páginas do aplicativo. Clique duas vezes em Page 14 - Place Order para exibir os detalhes da página. Você está trabalhando com regiões, especificamente com a região Order Header.

Clique na região Order Header e role a tela até a região de origem. Selecione todo o código da região de origem e substitua por  

place_order(:P14_ORDER_ID);

Clique no botão Apply Changes na parte superior da tela. Para testar o aplicativo modificado e essa parte do código especificamente, execute o aplicativo de amostra e faça um novo pedido.

Retorne ao Oracle SQL Developer e ao nó Application Express no navegador Connections. Expanda Sample Application e selecione 14. Place Order. Selecione a guia Regions e clique em Refresh. A região de origem Order Header deverá exibir corretamente agora  

(CLOB) place_order(:P14_ORDER_ID);

conforme mostrado na Figura 2. 

figure 2
Figura 2: bloco anônimo refatorado mostrando a chamada de procedimento

Conclusão

Nesta coluna, você viu que pode usar facilmente o Oracle SQL Developer para pesquisar aplicativos criados no Oracle Application Express. Melhor ainda, você pode examinar e ajustar qualquer código SQL e PL/SQL no aplicativo. Use o Oracle SQL Developer e o Oracle Application Express juntos para melhorar sua produtividade e seus aplicativos.


 


Sue Harper é gerente de produto sênior da Oracle em Londres. Seu blog técnico, sueharper.blogspot.com , trata dos recursos do Oracle SQL Developer.