Fórum Erro em Stored Procedure. #410700
17/12/2011
0
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
Curtir tópico
+ 0Posts
19/12/2011
Gustavo Bretas
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
19/12/2011
Mario Junior
Já tentei sim sem o SUSPEND; e o mesmo erro persiste.
Gostei + 0
19/12/2011
Gustavo Bretas
CREATE PROCEDURE GET_PESSOA RETURNS(P_VALOR INTEGER) AS BEGIN :P_VALOR = GEN_ID(GEN_PESSOAS,1); SUSPEND; END
Gostei + 0
19/12/2011
Mario Junior
Testei a sua sugestão e continua apresentando o mesmo erro.
Grato!
Gostei + 0
22/12/2011
Emerson Nascimento
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
24/12/2011
Mario Junior
O mesmo erro persiste. Infelizmente, mas obrigado pela ajuda. Estou tentando outras alternativas, mas até agora sem sucesso.
Gostei + 0
03/01/2012
Perivaldo Martins
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
Clique aqui para fazer login e interagir na Comunidade :)