Fórum Como alterar o Dialect de 1 para 3? #42153
05/02/2004
0
Galera,
Criei uma SP em um banco de dados Teste com Dialect 3, mas quando tentei criar a mesma SP no meu banco real, de todos os meus clientes, constatei que todos eles são Dialect 1 e ai na criação da SP recebo um erro.
Então fiquei com algumas dúvidas.
1. Meus bancos de dados estão todos em Dialect 1, como faço para mudá-los para o Dialect 3.
2. Tem muita diferença ´razoável´, digo, campos data, double precision e etc...?
3. Será que meus campos DATE vão dar problemas?
Valeu
----------> Minha Stored Procedure
CREATE PROCEDURE PR_CLIENTE_ANIVER (
PCADASTRO VARCHAR(10))
RETURNS (
IDADE INTEGER)
AS
DECLARE VARIABLE ANONASC INTEGER;
DECLARE VARIABLE MESNASC INTEGER;
DECLARE VARIABLE DIANASC INTEGER;
DECLARE VARIABLE ANO INTEGER;
DECLARE VARIABLE MES INTEGER;
DECLARE VARIABLE DIA INTEGER;
DECLARE VARIABLE VDATAANIVER DATE;
DECLARE VARIABLE VCADASTRO VARCHAR(10);
BEGIN
Ano = Extract(Year from Current_Date);
Mes = Extract(Month from Current_Date);
Dia = Extract(Day from Current_Date);
FOR SELECT Cadastro,Aniver FROM CLIENTES WHERE CADASTRO = :PCADASTRO INTO :VCadastro, :vDataAniver do
BEGIN
AnoNasc = Extract(Year from vDataAniver);
MesNasc = Extract(Month from vDataAniver);
DiaNasc = Extract(Day from vDataAniver);
Idade = Ano - AnoNasc;
if ((MesNasc > Mes) or ((MesNasc = Mes) and (DiaNasc > Dia))) then
Idade = Idade - 1;
SUSPEND;
END
END
Criei uma SP em um banco de dados Teste com Dialect 3, mas quando tentei criar a mesma SP no meu banco real, de todos os meus clientes, constatei que todos eles são Dialect 1 e ai na criação da SP recebo um erro.
Então fiquei com algumas dúvidas.
1. Meus bancos de dados estão todos em Dialect 1, como faço para mudá-los para o Dialect 3.
2. Tem muita diferença ´razoável´, digo, campos data, double precision e etc...?
3. Será que meus campos DATE vão dar problemas?
Valeu
----------> Minha Stored Procedure
CREATE PROCEDURE PR_CLIENTE_ANIVER (
PCADASTRO VARCHAR(10))
RETURNS (
IDADE INTEGER)
AS
DECLARE VARIABLE ANONASC INTEGER;
DECLARE VARIABLE MESNASC INTEGER;
DECLARE VARIABLE DIANASC INTEGER;
DECLARE VARIABLE ANO INTEGER;
DECLARE VARIABLE MES INTEGER;
DECLARE VARIABLE DIA INTEGER;
DECLARE VARIABLE VDATAANIVER DATE;
DECLARE VARIABLE VCADASTRO VARCHAR(10);
BEGIN
Ano = Extract(Year from Current_Date);
Mes = Extract(Month from Current_Date);
Dia = Extract(Day from Current_Date);
FOR SELECT Cadastro,Aniver FROM CLIENTES WHERE CADASTRO = :PCADASTRO INTO :VCadastro, :vDataAniver do
BEGIN
AnoNasc = Extract(Year from vDataAniver);
MesNasc = Extract(Month from vDataAniver);
DiaNasc = Extract(Day from vDataAniver);
Idade = Ano - AnoNasc;
if ((MesNasc > Mes) or ((MesNasc = Mes) and (DiaNasc > Dia))) then
Idade = Idade - 1;
SUSPEND;
END
END
Adriano Santos
Curtir tópico
+ 0
Responder
Post mais votado
06/02/2004
{ o gfix esta na pasta Bin do IB/FB e é um programa em modo caracter! }
Trocar o ´Dialect´ de 1 para 3 ::
gfix banco -sql_dialect 3 -user SYSDBA -password masterkey
{ banco é o caminho e nome do GDB/FDB
senha pode diferir, mas a padrão é masterkey }
[b:c7f9d533d5]Sobre o Dialeto 3[/b:c7f9d533d5]
As seguintes características são específicas do DIALETO 3, e são incompatíveis com o dialeto 1 e todos os BDs e clientes antigos:
Trocar o ´Dialect´ de 1 para 3 ::
gfix banco -sql_dialect 3 -user SYSDBA -password masterkey
{ banco é o caminho e nome do GDB/FDB
senha pode diferir, mas a padrão é masterkey }
[b:c7f9d533d5]Sobre o Dialeto 3[/b:c7f9d533d5]
As seguintes características são específicas do DIALETO 3, e são incompatíveis com o dialeto 1 e todos os BDs e clientes antigos:
Constantes alfa-numéricas devem ser delimitadas por aspas simples (apóstrofre). Aspas duplas (´) são usadas somente em identificadores delimitados.
O tipo de dado DATE armazena somente a DATA. Dois novos tipos de dados estão disponíveis : TIME que armazena somente a informação de HORA, e TIMESTAMP que armazena ambos DATA e HORA. O tipo TIMESTAMP substitui a funcionalidade do tipo DATE das versões anteriores do IB. O Dialeto 3 também inclui os operadores funcionais CURRENT_DATE, CURRENT_TIME, e CURRENT_TIMESTAMP.
Tipos DECIMAL e NUMERIC com precisão maior que 9 são gravados utilizando inteiros de 64 bits se forem criados no dialeto 3. Note que todas os campos desse tipo continuam sendo armazenados como float se o BD foi trazido de alguma versão anterior do IB.
[i:c7f9d533d5]by firebase...[/i:c7f9d533d5]Maicongabriel
Responder
Gostei + 1
Mais Posts
11/10/2016
Ricardo
Obrigado pela dica, funcionou perfeitamente comigo.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)