Erro ao executar Stored Procedure no Lazarus

29/08/2022

0

Há algum tempo atras criei uma pequena aplicação para controle de locação de imoveis, que na ocasião funcionava bem. Porém a mesma focou abandonada por um tempo e agora estou retomando. Sou novato em programação, e não estou conseguindo resolver um erro que está ocorrendo agora ao tentar executar uma stored procedure.
Estou usando o Firebird 2.5 com Lazarus 2.2 e quando clico no botao atualizar do meu form recebo a mensagem abaixo:

SQL Error: Dynamic SQL ErrorSQL error code = -84procedure ATUALIZA_CADASTRO does not return any valuesAt line 1, column 15.
Error Code: -84. non-SQL security class defined The SQL: SELECT * FROM ATUALIZA_CADASTRO(?);

A procedure criado no firebird é essa:

SET TERM ^ ;
CREATE PROCEDURE ATUALIZA_CADASTRO (
CODIGO integer )

AS
begin
update CADASTRO
set CADASTRO.ATIVO = ''''S''''
where CADASTRO.CODIGO = :codigo;
suspend;
end
^
SET TERM ; ^

GRANT EXECUTE
ON PROCEDURE ATUALIZA_CADASTRO TO SYSDBA WITH GRANT OPTION;

Alguem poderia me ajudar?

Obrigado!!
Vanderlei Luz

Vanderlei Luz

Responder

Posts

27/12/2022

Arthur Heinrich

Você está obtendo um erro de compilação?

Pergunto isso porque a linha "where CADASTRO.CODIGO = :codigo;" parece indicar uma variável, da mesma forma que especificamos via client, para trabalhar com prepare.

Dentro da stored procedure acho que não se utiliza os dois pontos na frente da variável. Para não confundir o parâmetro com a coluna, você pode utilizar um prefixo na variável.

SET TERM ^ ;
CREATE PROCEDURE ATUALIZA_CADASTRO (P_CODIGO integer ) AS
begin
  update CADASTRO set
    CADASTRO.ATIVO = 'S'
  where
    CODIGO = P_CODIGO;
suspend;
end
^
SET TERM ; ^

GRANT EXECUTE
ON PROCEDURE ATUALIZA_CADASTRO TO SYSDBA WITH GRANT OPTION;

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