É possive Montar essa SP, uso FireBird

Firebird

13/05/2007

tenho duas tabelas...
Locacoes...
DetLocacoes..

e quero fazer mais ou menos assim, só que não tenho ideia de como poderia ficar..
if (select count(*) from detlocacoes where detlocacoes.devolvido=´N´)<0 then begin update locacoes set locacoes.entregue=´S´ end else begin locacoes.entregue=´N´ end

só que não tenho ideia de como fazer isso rodar usando SQL dentro de uma SP :cry:


Paullsoftware

Paullsoftware

Curtidas 0

Respostas

Acacio

Acacio

13/05/2007

crie primeiro o sql depois crie uma variável conta que
é do tipo inteiro como abaixo e depois do resultado verifica
se o valor que foi passado para a variável é maior do que zero.


select count(*) from detlocacoes where detlocacoes.devolvido=´N´
:conta

if(conta < 0) then
begin
update locacoes set
locacoes.entregue=´S´
end
else
begin
locacoes.entregue=´N´
end


GOSTEI 0
Paullsoftware

Paullsoftware

13/05/2007

Valeu pela dica amigo, consegui usando FOR SELECT e ficou assim:
CREATE PROCEDURE ATUALIZA_LOCACAO (
    wlocacao integer)
returns (
    wconta integer)
as
begin
  for select count(*) from detlocacao where detlocacao.devolvido=´N´ and detlocacao.locacao=:wLocacao
  into :wconta
  do
   begin
  if (wconta>0) then
   begin
    update locacao set
    locacao.entregue=´N´;
   end
  else
   begin
    update locacao set
    locacao.entregue=´S´;
   end
  suspend;
  end
end

grato! 8)


GOSTEI 0
POSTAR