1) Introdução
Embora o Elipse E3 já possua objetos como a consulta, que facilitam a manipulação de registros do banco de dados, podemos melhorar seu desempenho criando, através da linguagem T-SQL, sub-rotinas direto no banco de dados, as quais realizam as tarefas no servidor de forma eficaz e com alto desempenho.
2) Consultas no E3
Como padrão, utilizamos a consulta do E3 para acessar registros de uma tabela no banco de dados, sendo um objeto simples e prático de ser utilizado, e existem casos onde utilizamos conexões ADO via script, porém não é necessário utilizar esse método no E3 quando se trata de bancos como SQL Server, ACCESS ou ORACLE.
A consulta no E3 funciona da seguinte maneira:
Aponta-se para uma (ou mais) tabela(s), da qual selecionam-se alguns (ou todos os) campos, e a consulta irá fazer um SELECT da tabela e retornar os registros encontrados. Podemos utilizar comandos como DELETE, INSERT e UPDATE editando a aba SQL da consulta, ou ainda utilizar funções SQL e aplicar filtros com a cláusula WHERE.
Quando o problema não é o tráfego na rede, a utilização das consultas é a melhor opção e a mais recomendada.
3) Utilizando procedimentos armazenados
Uma Stored Procedure é um conjunto de comandos ao qual atribuímos um nome. Esse conjunto fica armazenado no banco de dados (Servidor), podendo ser chamado a qualquer momento tanto pelo sistema gerenciador de banco de dados (SGBD) quanto por uma aplicação do E3.
Podemos utilizar Stored Procedures quando o tráfego de informações na rede é grande ou a aplicação tem baixo desempenho, sendo constatado que o consumo maior se deve à manipulação de dados entre a aplicação e o banco de dados.
Ao criarmos um procedimento armazenado, podemos passar parâmetros de entrada e de saída, os quais irão conter as informações requeridas por um SELECT, por exemplo.
Esses parâmetros de entrada são passados da mesma forma como passamos variáveis para filtros na consulta.
Como as Stored Procedures são analisadas e armazenadas na memória do servidor de dados após sua primeira execução, sua execução é mais rápida do que usar instruções SQL, pois essas serão analisadas a cada chamada.
Oferecem ainda um benefício relativo ao volume de dados que devem ser enviados para e do SQL Server. Podendo ser necessários alguns bytes para chamar um procedimento armazenado contendo vários milhares de bytes de instruções. O efeito acumulado dessa economia quando múltiplos usuários estão executando tarefas repetitivas pode ser muito significativo.
4) Aplicação (Banco de Dados)
Criou-se uma aplicação exemplo que ilustra como utilizar Stored Procedures para inserir, ler e apagar registros no banco de dados.
Basicamente a aplicação permite a manutenção dos dados da tabela Motores, onde o usuário tem permissão de inserir, apagar e verificar dados de motores em sua planta de fábrica. Iremos utilizar o SQL Server 2005 Express para criarmos a tabela e as Stored Procedures.
Inicialmente devemos abrir o SQL Server e conectar ao servidor local com a senha e o usuário criados ao instalar o SQL Server na máquina local.

Figura 1: Conexão ao SQL Server
Com o SQL Server aberto, iremos criar um novo banco chamado Equipamentos e nele iremos criar a tabela Motores. Esta tabela irá conter as colunas Fabricante, Area, Maquina, Potencia, Corrente e Tensao. Os campos serão do tipo nchar(10), nchar(10), nchar(10), float, float e float, respectivamente, conforme ilustra a figura:

Figura 2: Criação da tabela Motores
Dentro do banco Equipamentos acessamos a pasta Programmability. Clicando com o botão direito sobre a pasta Stored Procedures selecionamos a opção New Stored Procedure...

Figura 3: Criação da Stored Procedure
Será aberta a sua direita uma área de edição onde iremos criar as Stored Procedures, e iremos apagar todo o código que aparece como padrão.
Inserimos o seguinte código:
CREATE PROCEDURE procInsertMotor
@MFabricante nchar(10),
@MPotencia float,
@MCorrente float,
@MTensao float,
@MArea nchar(10),
@MMaquina nchar(10)
as
INSERT INTO Motores
(Fabricante,Potencia,Corrente,Tensao,Area,Maquina)
VALUES
(@MFabricante,@MPotencia,@MCorrente,@MTensao,@MArea,@MMaquina)
Com esse código estamos criando a Procedure que irá inserir os dados dos motores através do comando CREATE PROCEDURE, que tem como parâmetro um nome, ao qual chamamos de procInsertMotor.
Em seguida, declaramos as variáveis de entrada, que irão receber os valores enviados pelo aplicativo Elipse. As variáveis de entrada devem começar com o símbolo @ (arroba) seguidas do tipo (data type). Depois definimos a instrução SQL a ser executada, no caso de inserção, utilizamos o comando INSERT INTO, seguido do nome da tabela, colocamos então o nome das colunas e após o comando VALUES colocamos as variáveis, na ordem especificada. No final, clique no botão [Parse] ao lado do botão [Execute!].

Figura 4: Código da Stored Procedure procInsertMotor
Criamos agora uma nova Procedure da mesma maneira que a anterior; esta, porém, irá selecionar os dados da tabela Motores com um filtro por fabricante, como segue:

Figura 5: Código da Stored Procedure procSelectMotor
Agora vamos criar uma Procedure que irá apagar os dados na tabela Motores, como ilustra a figura:

Figura 6: Código da Stored Procedure procDeleteMotor
5) Aplicação (E3)
Agora que criamos e configuramos as Stored Procedures no banco de dados, precisamos ver como chamá-las no E3.
Crie um ovo projeto (aplicação padrão) e insira um objeto Banco de Dados, configure-o de modo a acessar o Banco Equipamentos, onde configuramos as Stored Procedures e onde existe a tabela Motores.

Figura 7: Conexão com a base de dados
Insira na aplicação três consultas e nomeie-as para ConsultaInsert, ConsultaDelete e ConsultaSelect, sendo que as consultas Insert e Delete ficarão na pasta de dados (servidor) e a consulta Select ficará na tela Inicial.

Figura 8: Inclusão das consultas no projeto
Vamos começar pela consulta Select; clique com o botão direito sobre a mesma e acesse a opção Configurar...
Vá até a aba SQL e habilite a edição direta do código SQL, digitando a seguinte linha:
| Exec procSelectMotor '<%Fab%>' |

Figura 9: Inclusão do código SQL
Este comando SQL irá executar (através da chamada Exec) uma Procedure (nome da Procedure) passando uma variável como parâmetro de entrada ('<%Fab%>').
Repita os passos anteriores para as consultas Insert e Delete, alterando apenas o comando SQL.
Para a ConsultaInsert, utilize o comando:
| Exec procInsertMotor '<%Fab%>',<%Pot%>,<%Cor%>,<%Ten%>,'<%Ar%>','<%Maq%>' |
Para a ConsultaDelete:
| exec procDeleteMotor '<%Fab%>','<%Area%>','<%Maq%>' |
NOTA: Para consultas localizadas no servidor, deve-se alterar a propriedade CursorLocation para 1 - clClient.
Após configurar as consultas, vamos criar uma interface na tela onde o usuário possa ver os equipamentos já cadastrados, inserir novos equipamentos e apagá-los.

Figura 10: Interface da aplicação
Insira um objeto E3Browser e configure-o para utilizar a ConsultaSelect.

Figura 11: Configuração do objeto E3Browser
Insira um setpoint na tela e um botão para buscar os dados, nele crie um script no evento Click() e insira o seguinte script:

Figura 12: Script do botão de comando
Crie agora um botão para inserir novos dados; este botão irá abrir uma segunda tela onde o usuário irá digitar os dados do motor e confirmá-los, inserindo os dados na tabela Equipamentos.

Figura 13: Tela de inclusão de equipamentos
Feita esta tela, crie um script no botão [OK] que irá executar a ConsultaInsert:

Figura 14: Código para inclusão do Equipamento
Por fim, iremos criar na tela inicial um botão para deletar os registros da tabela Motores; utilizaremos o seguinte script no evento Click() do botão [Deletar]:

Figura 15: Código para exclusão do equipamento
6) Conclusão
Torna-se bastante eficaz a tarefa de manipular dados em um banco de dados, pois o código fica centralizado, seguindo o conceito de bibliotecas, e ao ser executado é melhorado pelo próprio SQL, o que aumenta o desempenho da aplicação.
No visitor comments posted.