sql >> Database >  >> RDS >> Oracle

Hoe kan ik een kolom bijwerken vanuit een geneste tabel in pl/sql?

De syntaxis is een beetje onduidelijk, maar eigenlijk moet je de geneste tabel manipuleren met de MULTISET-operator.

update test 
set marks = marks multiset union all numberlist(42) 
where id_std = 1 

Hiermee wordt de bestaande set markeringen samengevoegd met een nieuwe set (in dit geval een set van één). Hier is een LiveSQL-demo (gratis Oracle Technet-account vereist) .

Het voordeel van deze aanpak is dat het gemakkelijk is om meerdere waarden tegelijk toe te voegen:

update test 
set marks = marks multiset union all numberlist(23, 69) 
where id_std = 1 

Geneste tabelkolommen zijn in principe slim, maar in de praktijk onhandig. Het gebruik ervan in SQL-instructies kan leiden tot lelijke SQL. Als u ze gaat gebruiken, moet u vertrouwd raken met alle MULTISET-operators. Meer informatie .



  1. Meerdere rijen invoegen vanuit een tekstgebied in MySQL

  2. Een left join beperken tot het retourneren van één resultaat?

  3. PHP kan geen verbinding maken met mysql via python

  4. Auditen in Oracle