Erro em Stored Procedure.
Saudações pessoal.
Estou tentando criar uma stored procedure para atualizar o contador do código da tabela pessoas.
Abaixo segue o código da tabela.
Em seguida criei a generator:
E agora tento criar a SP abaixo:
O seguinte erro é retornado:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER)
AS
BEGIN
P_VALOR = GEN_ID(GEN_PESSOAS,1)
Agradeço desde já a atenção de todos.
Grato!
Estou tentando criar uma stored procedure para atualizar o contador do código da tabela pessoas.
Abaixo segue o código da tabela.
/* Table: PESSOAS, Owner: SYSDBA */ CREATE TABLE PESSOAS ( CODIGO INTEGER NOT NULL, NOME VARCHAR(100) NOT NULL, LOGIN VARCHAR(20), SENHA VARCHAR(8), ESTADO VARCHAR(2), CIDADE VARCHAR(50), BAIRRO VARCHAR(50), ENDERECO VARCHAR(100), TELEFONE VARCHAR(20), CELULAR VARCHAR(20), ADM CHAR(1) NOT NULL, BATIDA1 TIMESTAMP, BATIDA2 TIMESTAMP, BATIDA3 TIMESTAMP, BATIDA4 TIMESTAMP, PRIMARY KEY (CODIGO) );
Em seguida criei a generator:
CREATE GENERATOR GEN_PESSOAS;
E agora tento criar a SP abaixo:
CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER)
AS
BEGIN
P_VALOR = GEN_ID(GEN_PESSOAS,1);
SUSPEND;
ENDO seguinte erro é retornado:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command
Statement: CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER)
AS
BEGIN
P_VALOR = GEN_ID(GEN_PESSOAS,1)
Agradeço desde já a atenção de todos.
Grato!
Mario Junior
Curtidas 0
Respostas
Gustavo Bretas
17/12/2011
Codifick
Eu não estou com um banco firebird aqui para confirmar, mas vc ja tentou sem o SUSPEND?
eu lembro que só usava SUSPEND quando o retorno era um conjunto de dados.
Segue um help de generator: http://www.firebirdsql.org/manual/generatorguide.html
Mas agora eu tenho uma pergunta, se vc esta usando generator, pq fazer uma procedure para chamar cada um?
Abraço!
Eu não estou com um banco firebird aqui para confirmar, mas vc ja tentou sem o SUSPEND?
eu lembro que só usava SUSPEND quando o retorno era um conjunto de dados.
Segue um help de generator: http://www.firebirdsql.org/manual/generatorguide.html
Mas agora eu tenho uma pergunta, se vc esta usando generator, pq fazer uma procedure para chamar cada um?
Abraço!
GOSTEI 0
Mario Junior
17/12/2011
Bretas
Já tentei sim sem o SUSPEND; e o mesmo erro persiste.
Já tentei sim sem o SUSPEND; e o mesmo erro persiste.
GOSTEI 0
Gustavo Bretas
17/12/2011
Não esta faltando um : (Dois pontos) na variável?
CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER) AS BEGIN :P_VALOR = GEN_ID(GEN_PESSOAS,1); SUSPEND; END
GOSTEI 0
Mario Junior
17/12/2011
Bretas,
Testei a sua sugestão e continua apresentando o mesmo erro.
Grato!
Testei a sua sugestão e continua apresentando o mesmo erro.
Grato!
GOSTEI 0
Emerson Nascimento
17/12/2011
o problema é o ponto-e-vírgula, que finaliza um comando.
quando você põe o ponto-e-evírgula, o mecanismo acha que o comando acabou ali.
tente assim:
com isso você troca o terminador de comandos para o circunflexo, e depois retorna para ponto-e-vírgula
quando você põe o ponto-e-evírgula, o mecanismo acha que o comando acabou ali.
tente assim:
SET TERM ^ ; CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER) AS BEGIN P_VALOR = GEN_ID(GEN_PESSOAS,1)^ END SET TERM ; ^
com isso você troca o terminador de comandos para o circunflexo, e depois retorna para ponto-e-vírgula
GOSTEI 0
Mario Junior
17/12/2011
Emerson,
O mesmo erro persiste. Infelizmente, mas obrigado pela ajuda. Estou tentando outras alternativas, mas até agora sem sucesso.
O mesmo erro persiste. Infelizmente, mas obrigado pela ajuda. Estou tentando outras alternativas, mas até agora sem sucesso.
GOSTEI 0
Perivaldo Martins
17/12/2011
Já tentou assim?
Boa sorte e bons códigos.
CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER) AS BEGIN P_VALOR = GEN_ID(GEN_PESSOAS, 1); END;
Boa sorte e bons códigos.
GOSTEI 0