create or replace PROCEDURE Atrazado (
p_cod_situacao g2a_requisicao.cod_situacao%type)
begin
if g2a_requisicao.data_prazo < sysdate and cod_situacao =0 then
update g2a_requisicao
set cod_situacao:=p_cod_situacao
where data_prazo < sysdate and cod_situacao =0
end if;
end atrazados;
mas infelizmente não dá nada, ou melhor apenas dá erros.
será que alguém pode dar uma vista de olhos:
Falta você passar como parâmetro o campo g2a_requisicao.data_prazo que está utilizando no IF. Outro problema é o ":=" no update, o correto é só deixar "=".
Pela descrição do seu problema, você poderia fazer direto em SQL:
update g2a_requisicao
set cod_situacao =1
where data_prazo > sysdate
and cod_situacao = 0;
Veja que como você especificou que quer alterar as datas que já "venceram", então o correto é usar "where data_prazo > sysdate" e não "where data_prazo < sysdate" como você está fazendo...
Boas,
sim poderia fazer directamente no SQL, mas o problema é mesmo fase-lo com um procedure.
Quanto À questão do < ou > a data do sistema deve ser maior que a data de devolução só assim sei que ultrapassou o prazo e não ao contrario.
create or replace PROCEDURE Atrazado (
p_cod_situacao g2a_requisicao.cod_situacao%type)
begin
update g2a_requisicao
set cod_situacao:=p_cod_situacao
where data_prazo < sysdate and cod_situacao =0;
end atrazados;
Quanto À questão do < ou > a data do sistema deve ser maior que a data de devolução só assim sei que ultrapassou o prazo e não ao contrario.