Fórum Erro ao Compilar Procedure #492400
16/09/2014
0
estou tentando compilar uma procedure da vídeo aula do Renato Matos, porém está apresentando erro.
Script:
create procedure sp_get_gerador (pNome varchar(50)) returns (pValor integer)
as
declare variable vStm varchar(500);
begin
vStm = 'select next value for ' || pNome || ' from rdb$database';
execute statement vStm into :pValor;
suspend;
end;
Erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, char 9.
statement.
obs.: Se eu comento a linha ref. ao execute statement e tento compilar funciona
Estou usando o FB 2.5 / IBExpert
Alguém faz ideia o que possa ser?
abs
Paulo Brasiliense
Curtir tópico
+ 0Posts
17/09/2014
Deivison Melo
SET TERM ^ ;
create or alter procedure SP_GET_GERADOR (
PNOME varchar(50))
returns (
PVALOR integer)
as
declare variable VSTM varchar(500);
begin
vStm = 'select next value for ' || pNome || ' from rdb$database';
execute statement vStm
into :pValor;
suspend;
end^
SET TERM ; ^
/* Existing privileges on this procedure */
GRANT EXECUTE ON PROCEDURE SP_GET_GERADOR TO SYSDBA;
Abração e bons códigos!
Qualquer dúvida, por favor, postar!
Gostei + 0
17/09/2014
Paulo Brasiliense
Fiz um novo teste, porém sem sucesso.
Apresenta o mesmo erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 9, char 9.
statement.
obs.: Após a msg de erro, o curso fica posicionado entre o 't' e o 'e' do execute.
Será que poderia ser a dll do FB?
Obrigado de qq forma!
Gostei + 0
18/09/2014
Deivison Melo
Estranho, porquê vc disse que está usando o Firebird 2.5, as sequence's foram adicionadas a partir do Firebird 2.0, a não ser que apenas o seu servidor seja da versão 2.5 e o banco tenha sido criado em uma versão anterior a 2.0, exemplo a versão 1.5.
Esse você usará no próprio IBExpert (E aí verá a versão que seu servidor está rodando)
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') VERSAO
FROM RDB$DATABASE
Esse outro comando vc verá a página de cabeçalho do banco de dados, para isso, esteja na pasta bin do firebir,
pois a ferramenta gstat encontra-se lá.
gstat -h banco.fdb
Veja qual a versão do ODS com o comando gstat
ODS significa On Disc Structure, que nada mais é do que o número da versão da estrutura do arquivo de banco de dados Firebird/InterBase. Sempre que há uma alteração na estrutura básica do arquivo de banco de dados (geralmente quando uma nova versão do FB é lançada), a ODS também muda.
Veja as versões da ODS para cada versão do Firebird:
Firebird 1.0 - ODS 10
Firebird 1.5 - ODS 10.1
Firebird 2.0 - ODS 11.0
Firebird 2.1 - ODS 11.1
Firebird 2.5 - ODS 11.2
Quando a mudança na estrutura não é significativa, apenas o menor número é alterado.
Até a versão 2.5, o Firebird é capaz de acessar bancos de dados com ODS de versões anteriores.
Caso a versão da ODS exibida no gstat for menor que ODS 11.0, então é porquê seu banco foi criado em uma versão anterior e não suporta sequences.
Atualmente, existe uma incompatibilidade da numeração das ODS entre o InterBase e o Firebird, ou seja, a ODS 11 do InterBase é incompatível com a ODS 11 do Firebird, etc.
Atenção: As versões 64bits do Firebird NÃO conseguem acessar bancos de dados com ODS menor que 11.1 criados em versões 32bits do Firebird. A mensagem de erro retornada é is not a valid database.
PS. Caso nao conseguir, e seja possível, disponibilize o banco em algum repositório na internet para que possa verificar o motivo da persistência do problema.
Bom, veja se isso te ajuda, qualquer anormalidade estou à disposição!
Boa sorte e bons códigos!!
Emanoel Deivison
Recife - PE
Gostei + 0
18/09/2014
Paulo Brasiliense
Obrigado por toda explicação! Irei efetuar novos testes e post aqui em breve o resultado!
Espero que de certo dessa vez!
vlw
Gostei + 0
20/09/2014
Deivison Melo
Por favor, postar se as orientações te ajudaram para que possa finalizar o tópico!
Abração e bons códigos!!!
Gostei + 0
22/09/2014
Paulo Brasiliense
Desculpe na demora da resposta. Ando enrolado com o trabalho.
Teste ontem a noite e era isso mesmo.
Como estou apenas treinando, criei outro banco em versão compatível e funcionou.
Obrigado pela ajuda.
abs
Gostei + 0
23/09/2014
Deivison Melo
Atenciosamente,
Emanoel Deivison
Recife - PE
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)