x
1
begin
2
3
-- VALIDACOES
4
-- EXTERNALID E INTERNALID NAO INFORMADOS
5
if coalesce(PutLinha.externalid,'')='' and PutLinha.internalid is null then
6
RAISE EXCEPTION 'externalid = % and internalid = %', PutLinha.externalid, PutLinha.internalid
7
USING HINT = 'Fields internalid and externalid must be not null';
8
end if;
9
10
--DESCRICAO NULA
11
if descricao is null then
12
RAISE EXCEPTION 'descricao = %', descricao
13
USING HINT = 'Field descricao must be not null';
14
end if;
15
16
--IDNATIVO FORA DO PADRAO
17
if idnativo not in (0,1,-99999) then
18
RAISE EXCEPTION 'idnativo = %', idnativo
19
USING HINT = 'Field must not be null or different from 1 or 0.';
20
end if;
21
22
-- LOOKUP
23
-- linha
24
IF PutLinha.internalid IS NULL
25
THEN PutLinha.internalid = (SELECT idlinha FROM linha WHERE CODIGOERP = PutLinha.externalid);
26
END IF;
27
28
-- UPDATE
29
update linha set
30
descricao = case when PutLinha.descricao = 'NOVALUEWS' then linha.descricao else PutLinha.descricao end,
31
idnativo = case when PutLinha.idnativo = -99999 then linha.idnativo else PutLinha.idnativo end,
32
codigo = case when PutLinha.codigo = 'NOVALUEWS' then linha.codigo else PutLinha.codigo end,
33
sgllinha = case when PutLinha.sgllinha = 'NOVALUEWS' then linha.sgllinha else PutLinha.sgllinha end,
34
codigoerp = case when PutLinha.externalid = 'NOVALUEWS' then codigoerp else PutLinha.externalid end
35
where idlinha = internalid;
36
37
return query select internalid;
38
END;