Hierarchický dotaz funguje pouze s SELECT. Nefunguje to s UPDATE (souhlasím, že by to mohlo být pěkné, kdyby to fungovalo).
Takže můžete udělat toto:
update HTABLE
set status = 'INACTIVE'
WHERE STATUS <> 'CLOSE'
and id in ( select c.id
from htable
connect by prior ID = PARENT_ID
start with PARENT_ID = 12345);
Všimněte si pořadí sloupců connect by prior ID = PARENT_ID
. Normálně chceme sejít po stromě z řady ZAČÍT S, což jsem udělal. Vaše objednávka se connect by prior PARENT_ID = ID
chodí po stromě z 12345 ke svým rodičům, prarodičům atd. Pokud to chcete, přepněte connect by
doložka zpět.