Erro ao Compilar Procedure
Pessoal,
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
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
Curtidas 0
Respostas
Deivison Melo
16/09/2014
Não sei o que você fez, peguei ela e rodei na minha versão e rodou blz, só fiz uma alteração básica no cabeçalho!
Abração e bons códigos!
Qualquer dúvida, por favor, postar!
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
Paulo Brasiliense
16/09/2014
Boa noite Deivison, e obrigado desde já pela ajuda!
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!
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
Deivison Melo
16/09/2014
https://www.devmedia.com.br/forum/add/insertpost.php?p=492400
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)
[code]
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') VERSAO
FROM RDB$DATABASE
[\code]
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á.
[code]
gstat -h banco.fdb
[\code]
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
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)
[code]
SELECT RDB$GET_CONTEXT('SYSTEM', 'ENGINE_VERSION') VERSAO
FROM RDB$DATABASE
[\code]
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á.
[code]
gstat -h banco.fdb
[\code]
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
Deivison Melo
16/09/2014
https://www.devmedia.com.br/forum/add/insertpost.php?p=492400
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)
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á.
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
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
Paulo Brasiliense
16/09/2014
Boa noite Deivison!
Obrigado por toda explicação! Irei efetuar novos testes e post aqui em breve o resultado!
Espero que de certo dessa vez!
vlw
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
Deivison Melo
16/09/2014
Sempre as ordens!
Por favor, postar se as orientações te ajudaram para que possa finalizar o tópico!
Abração e bons códigos!!!
Por favor, postar se as orientações te ajudaram para que possa finalizar o tópico!
Abração e bons códigos!!!
GOSTEI 0
Paulo Brasiliense
16/09/2014
Boa noite Deivison!
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
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
Deivison Melo
16/09/2014
Qualquer dúvida estamos a disposição!
Atenciosamente,
Emanoel Deivison
Recife - PE
Atenciosamente,
Emanoel Deivison
Recife - PE
GOSTEI 0