sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo actualizar una columna de una tabla anidada en pl/sql?

La sintaxis es un poco oscura, pero básicamente necesita manipular la tabla anidada con el operador MULTISET.

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

Esto concatena el conjunto existente de marcas con un nuevo conjunto (en este caso, un conjunto de uno). Aquí está una demostración de LiveSQL (se requiere una cuenta gratuita de Oracle Technet) .

La ventaja de este enfoque es que es fácil agregar varios valores a la vez:

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

Las columnas de tablas anidadas son inteligentes en principio pero incómodas en la práctica. Usarlos en declaraciones SQL puede conducir a un SQL feo. Si los va a utilizar, deberá familiarizarse con todos los operadores MULTISET. Más información .