O que há de errado na minha declaração de atualização com uma associação ao Oracle?
Estou trabalhando com umOrácul 10g de banco de dado
Tenho as duas tabelas a seguir:
T_DEBTOR :
- ID_DEBTOR
- HEADER
T_ELEMENT :
- ID_ELEMENT
- ID_DEBTOR
- INSURER
Estas duas tabelas são unidas usando o campo ID_DEBTO
Desejo atualizar o valor T_ELEMENT.INSURER com o T_DEBTOR.HEADER associado apenas se HEADER não for nulo. Em outras palavras
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER
Else T_ELEMENT.INSURER is not modified!
Tentei usar a seguinte consulta SQL:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR);
Esta consulta está funcionando para todos os elementos vinculados aos devedores que possuem um HEADER não nulo. No entanto, quando T_DEBTOR.HEADER for nulo, essa consulta definirá T_ELEMENT.INSURER como nulo, o que não está corret
ie:
If T_DEBTOR.HEADER != null
Then T_ELEMENT.INSURER = T_DEBTOR.HEADER --> This part is OK
Else T_ELEMENT.INSURER is set to null --> This part is NOT OK
O que há de errado com minha consulta?
Edit, sobre a resposta de Brian Storrar:
O que eu quero fazer é algo assim:
update
T_ELEMENT elt
set elt.INSURER = (
select HEADER
from T_DEBTOR debtor
where
debtor.HEADER is not null
and debtor.ID_DEBTOR = elt.ID_DEBTOR)
where debtor.HEADER is not null;