tyle="BORDER-RIGHT: #d4d0c8; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #b3b3b3; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 62.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; mso-border-left-alt: solid black .5pt; mso-border-top-alt: solid black .5pt; mso-border-bottom-alt: solid black .5pt" vAlign=top width=84>
MS SQL Server
Firebird |
PostgreSQL | |||
Alfanumérico - tamanho variável |
Varchar2 |
Varchar |
Varchar |
Varchar |
Alfanumérico - tamanho fixo |
Char |
Char |
Char |
Char |
Binário |
Long Raw |
Image |
Blob |
Bytea |
Data/Hora |
Date |
DateTime |
Date |
Date |
Inteiro |
Int/Integer |
Int |
Integer |
Int8 |
Numérico com Decimais |
Number |
Decimal |
Decimal |
Numeric |
Texto |
Long |
Text |
Varchar |
Text |
Tabela 1. Tipos de dados dos SGBDs
É importante considerar que além dos tipos de dados relacionados na Tabela 1, também existem tipos similares, que possuem funções específicas. Por exemplo: o tipo nvarchar no SQL Server também armazena valores alfanuméricos, porém usa a codificação Unicode, usada para representação de caracteres de línguas específicas como o japonês. Quanto à sintaxe da instrução Create, quando forem usadas as opções básicas da instrução, o comando é padrão para todos os bancos, conforme exemplo na Listagem 1.
Listagem 1. Instrução de criação de uma tabela (tipos do SQL Server)
Create Table Cliente
(ID Int Not Null,
Codigo Int Not Null,
Nome Varchar(40) Not Null,
Endereco Varchar(40),
Constraint PK_Cliente Primary Key(ID));
A manutenção das tabelas utiliza praticamente uma sintaxe padrão. Uma exceção são as versões anteriores do Oracle, que não permitem retirar um atributo da mesma, sendo necessário salvá-la em outra temporária, recriá-la sem o campo e restaurar as informações para a tabela original.
Triggers/Stored Procedures
A vantagem de se utilizar Triggers e Stored Procedures é que você consegue colocar as regras do negócio da aplicação no banco de dados, agilizando alguns procedimentos e, principalmente, protegendo a integridade dos dados independentemente do aplicativo que está acessando as informações. Entretanto a portabilidade da aplicação é inversamente proporcional ao uso dos mesmos.
As instruções SQL são padronizadas pelo padrão ANSI e por isso possuem uma boa similaridade entre os diversos fornecedores de SGBD, porém a linguagem empregada no desenvolvimento de Triggers e Stored Procedure não é controlada por nenhum padrão e cada fornecedor possui uma linguagem que geralmente é incompatível com os outros fornecedores.
Resumindo você terá que dar manutenção em tantas fontes quantos forem os bancos de dados onde a sua aplicação irá executar. Na Listagem 2 são apresentadas Triggers que fazem exatamente a mesma operação, porém observe a sintaxe utilizada por cada fornecedor (neste exemplo citei o Firebird e SQL Server, no endereço para download você encontra também o código para Oracle e PostgreSQL). Todas as Triggers controlam a inclusão de um item da nota fiscal, limitando a um máximo de 30 itens.
Listagem 2. Comandos para criação de Triggers em diferentes banco de dados
Trigger para o SQL Server
-- Exclui a trigger caso ela já exista
If Object_id ('TR_IN_ITEM','TR') Is Not Null
Drop Trigger TR_IN_ITEM
Go
Create Trigger TR_IN_ITEM
On ITEM
After Insert
as
Declare
@LTOTALITENS INT,
@LNOTA INT
Begin
...