Zim 8.x - JDBC SAM Zim JDBCSAM para as versões 7 e 8: JDBCSAM -Serve para acessar bases de dados SQL a partir de uma aplicação ZIM. Este produto está substituindo os outros produtos SAM’s; É compatível com os servidores SQL: Oracle, SQLServer, PostgreSQL e MySQL; Utiliza JDBC Driver (incluido no produto) para acesso ao banco de dados SQL, não sendo necessário utilização de software “cliente” para acesso; Funciona diferente dos outros produtos Zim SAM’s, ou seja é necessário: o Revisar programas para utilizar (quando o cliente já utiliza SAM); o Reescrever programas para utilizar (quando o cliente não utiliza SAM); o Modificar tabelas no lado do servidor SQL (no caso de Oracle) – veja item 1 (abaixo); É necessário instalar uma biblioteca de funções SQL (zimorafunc.sql) para simular as funções Zim do lado do servidor SQL (Oracle, SQLServer e etc); O programa pconnect.zim (anexo) contêm um exemplo de como conectar usando JDBCSAM; Habilitar o produto Zim JDBCSAM for Oracle. Abaixo segue uma pequena explicação sobre o produto Zim JDBCSAM for Oracle. O produto Zim JDBCSAM for Oracle é o novo produto da Zim que está substituindo os produtos SAM’s da versões anteriores ao Zim 7.11. O produto Zim JDBCSAM for Oracle é utilizado para conexão do Zim com o banco de dados Oracle: inserindo, alterando ou consultando os dados armazenados num servidor SQL. Com o objetivo de melhorar a performance, todos os comandos Zim tem seu respectivo comando SQL gerado e enviado ao servidor Oracle para execução, por isso a necessidade de ter as funções Zim sendo “replicadas” do lado do servidor Oracle, esta script está disponivel em anexo. A mesma deverá ser recriada debaixo do mesmo usuário que estará acessando as tabelas Oracle. Existem outros pontos que devem ser considerados: - Utilização de variáveis DATE em comandos FIND, CHANGE, DELETE e COMPUTE; - Comparação entre diferentes tipos de dados numa cláusula WHERE; Se você for utilizar o produto JDBCSAM, você deve configurar a variável de ambiente SQLCPI, veja abaixo: # export SQLCPI=$ZIM/ORASQLCPI --> Oracle Para poder utilizar o Zim 7.12 JDBCSAM você deverá instalar/configurar o JAVA em seu ambiente. O JAVA a ser instalado deve ser o do site http://www.java.com. Não recomendamos a utilização do JAVA que vem pré-instalado em algumas distribuições Linux. O diretorio onde o Java estáa instalado devera estar configurado na variavel PATH do Linux, HP-UX ou AIX. Zim 8.x - JDBC SAM Faça essa configuração no arquivo /etc/profile, para que a variável PATH seja atualizada para todos os usuários do sistema. [root@localhost ~]# export PATH=$PATH:/usr/bin/java/bin OBS: para saber se o Java esta devidamente configurado para ser utilizado pelo Zim, execute os comandos abaixo: [root@localhost ~]# which java --> sera exibida uma mensagem com o diretorio onde o Java está instalado [root@localhost ~]# java -version --> sera exibida uma mensagem com a versao corrente do Java a ser utilizado Para executar os testes de dentro do Zim, voce devera executar o comando abaixo para se conectar a uma base de dados Oracle: > connect to "JDBCSAM" using ("remotedatabasename", "oracle", "orauser_name","orauser_pwd","1521","HOSTIP_OR_HOSTNAME") NOTA: a porta está com valor padrão do Oracle, que pode ser alterado conforme o ambiente de cada cliente. Instalação do produto Zim JDBCSAM for Oracle Na aquisição do produto JDBCSAM, acompanham em anexo os arquivos que deverão ser utilizados para a instalação/configuração do Zim 7.12 JDBCSAM com Oracle em seu ambiente: • zimorafunc.sql – para a criação da biblioteca de funções Zim/SQL no banco de dados Oracle (usar o mesmo usuário que irá acessar o banco de dados Oracle); • jdbcsam.sql - deverá ser copiado no diretório onde o Zim 7.12 está instalado; • pconnect.prg – programa exemplo para conexão a um banco de dados Oracle. Para poder utilizar o Zim 7.12 JDBCSAM você deverá instalar/configurar o JAVA no seu ambiente. • O JAVA a ser instalado deve ser o do site www.java.com. • O diretório onde o Java está instalado deverá estar configurado na variável PATH do Windows. NOTA: não é obrigatória a instalação do cliente Oracle na estação onde estará sendo feito o acesso ao Oracle via JDBCSAM, pois todo acesso será feito via JDBC driver da Oracle, que está incluído no produto. Particularidades do produto Zim JDBCSAM for Oracle Gostaríamos de salientar que o produto Zim JDBCSAM for Oracle que você irá testar, tem certas particularidades que o difere do produto Zim OracleSAM disponibilizado anteriormente. Criamos uma lista especificando os itens que merecem especial atenção no momento da utilização do produto Zim JDBCSAM for Oracle: Zim 8.x - JDBC SAM 1) Padrão de campos deve seguir o modelo abaixo: 2) Todos os comandos Zim são traduzidos para comandos SQL, com isso é necessário ter instalado no lado do Oracle o package ZIMFUNC (em anexo), que é responsável em reproduzir as funções Zim do lado do banco de dados Oracle (está em anexo e deve ser incluido para no mesmo usuário que fará o acesso a base de dados). 3) Utilização de campos com tipo de dado incompatível (NUMERIC x DATE x CHAR) em clausula WHERE ou em concatenação dentro de um comando Zim a. Quando for necessário comparar tipos de dado diferentes, deve-se utilizar uma função ZIM para compatibilizar: FIND TABELA WHERE CAMPO_CHAR_8 = DATA_VENCTO --> ERRO FIND TABELA WHERE CAMPO_CHAR_8 = $MASK(DATA_VENCTO,”YYYYMMDD”) --> CERTO b. Quando for necessário utilizar concatenação, deve-se utilizar uma função Zim para compatibilizar: FIND TABELA WHERE CAMPO_CHAR_10 = $concat($Mask(vValor,”99”),DATA_VENCTO) --> ERRO FIND TABELA WHERE CAMPO_CHAR_10 = $concat($Mask(vValor,”99”), $Mask(DATA_VENCTO,”YYYYMMDD”)) --> CERTO 4) Utilização de campo tipo DATE a. Não existe campo DATE com valor “0” (zero), o valor padrão é NULL; b. Existem restrições em sua utilização em FIND, ADD, CHANGE, DELETE e COMPUTE, devido ao modo como o banco de dados Oracle remoto faz o tratamento deste tipo de campo; c. Não é possível fazer atribuição de valor 0 (zero) a um campo do tipo DATE em comandos Zim, se for necessário inicializar ou zerar um campo do tipo DATE deve-se utilizar NULL ou atribuir NULL a um campo DATE e utilização na atribuição. 5) Expressão CASE dentro de uma clausula SORT – compatibilizar tipos de dados – [ CAMPO2 = char(1) ] FIND TABELA SORTED BY { CAMPO_NUMERICO1 wh CAMPO2 = "", CAMPO2 } --> ERRO FIND TABELA SORTED BY { $Mask(CAMPO_NUMERICO1,”9”) wh CAMPO2 = "", CAMPO2 } --> CERTO 6) Expressão CASE dentro de uma clausula WHERE FIND TABELA WHERE CHAVE={CAMPO_NUMERICO1 wh CAMPO3="", CAMPO3} --> ERRO FIND TABELA WHERE CHAVE={$Mask(CAMPO_NUMERICO3,”99”) wh CAMPO3="",CAMPO3} -> CERTO Zim 8.x - JDBC SAM 7) Utilização de CASE utilizando campo do tipo DATE A expressão {FIELD_DATE,0} é inválida, devendo-se remover o CASE “{}” deixando somente o campo FIELD_DATE, exemplo: FIND TABELA WHERE {FIELD_DATE,0} = 0 --> ERRO FIND TABELA WHERE FIELD_DATE = 0 --> CERTO NOTA: o comando Zim acima será traduzido para comando SQL abaixo: SELECT TABELA_PKEY FROM TABELA WHERE FIELD_DATE IS NULL 8) Utilização de comando “ADD... FROM SET” Verificar se existem chaves primárias envolvidas, que não podem ser um campo do tipo ROE. Estas são as considerações que temos analisadas até agora em nossos projetos de migração de Zim DB para Oracle DB. 9) Campos virtuais (incluindo campos do tipo chave): Deverão ser criadas Triggers no Oracle para manter os campos que antes eram virtuais no Zim, sendo que no lado do Zim estes campos deverão ter a propriedade REQD com o valor “ROE”. 10) Chaves Primárias (obrigatório): É obrigatória a existência de chaves primárias em todas as tabelas da aplicação, se não houver um campo a ser definido como chave primária (a fim de garantir unicidade), um campo do tipo Index = “PKEY” e Reqd = “Sequence” deverá ser criado no lado do Zim, sendo que no lado do Oracle o campo somente receberá um valor gerado automaticamente pelo Zim (veja abaixo) Nota: A Zim possue um serviço de consultoria para migração de ambientes Zim/DB-Zim para Zim/DB-SQL (Oracle, SQLServer, PostgreSQL e MySQL), onde temos não somente ferramentas, mas a expertise para a migração com sucesso da aplicação Zim para utilização de banco de dados padrão SQL. Para adquirir estes produtos entre em contato com nosso departamento Comercial no fone: 0800.724.0107 Ramal 132 e falar com o Sr. Leonardo Batisteli.