Adicionar coluna com tipo numeric

10/11/2015

0

Bom dia a todos,
estou tentando adicionar uma nova coluna na minha tabela do tipo numeric (via delphi), porém estou recebendo a seguinte mensagem:

SQL Error: Dynamic SQL Error SQL error code = -817 Metadata update statement is not allowed by the current database SQL dialect 1. Error Code: -817. The INSERT, UPDATE, DELETE, DDL or authorization statement cannot be executed because the transaction is inquiry only The SQL: ALTER TABLE TESTE ADD VALOR NUMERIC(10,2);

Se eu rodar o script direto pelo IBExpert a coluna é adicionada normalmente, porém via delphi exibe a mensagem acima..
Trecho do código do delphi:

qr.Close;
qr.SQL.Clear;
qr.SQL.Add('ALTER TABLE TESTE ADD VALOR NUMERIC(10,2);');
qr.ExecSQL;


Estou usando delphi 2010 com Zeos e firebird 2.5

o problema ocorre só com o tipo numeric... Se mudar para varchar, por exemplo, vai rodar normalmente!
Usuario

Usuario

Responder

Post mais votado

11/11/2015

Pessoal, descobri o que acontecia!
Pelo que andei pesquisando se adicionar o tipo NUMERIC com tamanho de 10 acima (Ex.: NUMERIC(10,2) ) ele passa a usar INT64 internamente.. Então mudei o tamanho do campo para NUMERIC(5,2) e passou a rodar o script normalmente! Agora o que fique confuso é o porque o script roda no IBExpert e via delphi não vai! Mas, problema resolvido!

Usuario

Usuario
Responder

Mais Posts

10/11/2015

e Ltda

Pela mensagem apresenta que a SQL, não pode ser executado em um banco de dados que contenha o DIALECT 1, fiz o teste aqui diretamente pelo DELPHI, e funcionou normalmente com o DIALECT 3, o estranho é ele funcionar diretamente pelo IBEXPERT... provavelmente quando você registrou a base, foi como 3, verifica como está a configuração da sua CONNECTION lá no Delphi.
Responder

10/11/2015

Usuario

Olá ecocentauro,
Pior que no IBExpert a frente do nome da base está entre parenteses Dialect 1 e por la roda!

Minha conexao está assim...
[img:descricao=Conexao]http://arquivo.devmedia.com.br/forum/imagem/332823-20151110-173121.png[/img]

Há alguma coisa que posso fazer referente a isso?
Responder

11/11/2015

Usuario

Ninguem? :(
Responder

11/11/2015

Rafael Bosco

Verifica no registro da base no IBEXPERT se a versão que você colocou está Firebird 2.5, se puder mandar uma imagem, seria melhor. Mas acredito que seja o fato de que esteja no SQL Dialect 1, altere no Zeos o dialect para 3 e teste.
Responder

11/11/2015

Usuario

Bom dia Rafael,
A versão do firebird está 2.5 e o Dialect está como 1.. Segue a imagem
[img:descricao=Imagem]http://arquivo.devmedia.com.br/forum/imagem/332823-20151111-123949.png[/img]

Você disse para alterar o dialect para 3 no Zeos... como faço ?
Responder

11/11/2015

Rafael Bosco

Como eu utilizo o FireDac para a conexão do banco de dados, ele fica no TFDConnection, acredito que a do Zeos seja parecida, procure nos parâmetros da conexão do banco, provavelmente em Properties, exemplo no FireDac;
[img]http://arquivo.devmedia.com.br/forum/imagem/463111-20151111-132635.png[/img]


Pelo que li na internet, o SQL error -817, é pelo de estar usando uma versão do FireBird atualizada, porém com o Dialect 1, se caso não identificar, sugiro alterar o Dialect da base de dados, ou a versão do Firebird.
Responder

29/10/2017

Marcelo Silva

Estava com o mesmo problema. Obrigado por compartilhar a solução, aqui funcionou tb.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar