segunda-feira, 26 de novembro de 2012

Migração MSDAORA para ORAOLEDB - Troca do SELECT

Na minha postagem anterior dei uma visão geral do projeto. Para os técnicos pode ter sido uma decepção, principalmente para aqueles que estão enfrentando os mesmos problemas, pois a exposição era muito teórica. Na postagem de hoje, vou ser um pouco mais técnico, mostrando como fiz a conversão das páginas que continham o comando SQL SELECT, sem contudo descer ao nível dos comandos de programação.

Um fato que facilitou muito a conversão, foi a padronização do código, o que me permitiu a busca dos pontos que deveriam ser alterados sem muitas variações.

Descreverei o processo de conversão, para que você, usando qualquer linguagem de programação possa repeti-lo. Como dito na postagem anterior, fiz a conversão utilizando o ORACLE PL/SQL. Não pretendo descer ao nível do código, mostrando os comandos, mas falar de um processo que pode ser repetido. Mostrar o código ajudaria muito pouco, uma vez que existem particularidades em cada aplicação e suas páginas que dificultam a criação de uma ferramenta de conversão automática que atenda a todas as necessidades. A criação dessa ferramenta estava fora do escopo do projeto.

A primeira atividade do programa, foi adicionar à página uma função para buscar uma nova conexão ao Banco de Dados (BD). Isso foi feito colocando um novo INCLUDE do arquivo que contém a função de busca de conexões logo após a primeira linha.

A função de busca de conexões é um pouco mais complexa no novo provider (ORAOLEDB) que no antigo. Então, em uma postagem específica, detalharei a sua construção.

!--#include file="/ConnectionOracle.asp"-->

Depois passei a identificar a criação do RecordSet para transformá-lo. No MSDAORA, a característica era a seguinte:

         set rsXxx = server.createObject("ADODB.RecordSet")
         rsXxx.open "comandoSql", "String de Conexão", ...

Onde: rsXxx é o nome do RecordSet

Essas linhas passaram a ter as seguintes características no ORAOLEDB:

 set conn = getConnection("XXX")
 set rsXxx = conn.createDynaset( "comandoSql", 0 )

Observe que eu troquei a criação do objeto no MSDAORA por uma chamada a uma função, onde passo o nome do BD que quero acessar. Essa função é responsável por criar o objeto de conexão e devolvê-lo à página. A função getConnection(BD) foi incluída na página ao adicionarmos um INCLUDE como primeiro passo.

Basicamente o que o programa de conversão precisou fazer, foi encontrar uma linha com o texto "server.createObject" e dentro dela identificar e guardar o nome do "RecordSet", que sempre era a primeira "palavra" depois do comando "set". Identificada a linha e o "RecordSet", bastou trocá-la pela linha com a obtenção da conexão no novo provider.

Depois, precisei localizar uma linha que tivesse a seguinte característica:

         "nomeDoRecordSet".open

Bastando trocá-la pelo comando do novo provider.

         set "nomeDoRecordSet" = conn.createDynaset( sql , 0 )

Com esses dois passos, conseguir trocar todas as páginas do sistema que continham o comando SQL SELECT.

Na próxima postagem discorrerei como foi a troca da páginas com chamadas às Stored Procedures.

Nenhum comentário:

Postar um comentário