Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como posso atualizar uma coluna de uma tabela aninhada em pl/sql?


A sintaxe é um pouco obscura, mas basicamente você precisa manipular a tabela aninhada com o operador MULTISET.
update test 
set marks = marks multiset union all numberlist(42) 
where id_std = 1 

Isso concatena o conjunto de marcas existente com um novo conjunto (neste caso, um conjunto de um). Aqui está uma demonstração do LiveSQL (é necessária uma conta gratuita do Oracle Technet) .

A vantagem dessa abordagem é que é fácil adicionar vários valores de uma só vez:
update test 
set marks = marks multiset union all numberlist(23, 69) 
where id_std = 1 

Colunas de tabela aninhadas são inteligentes em princípio, mas desajeitadas na prática. Usá-los em instruções SQL pode levar a um SQL feio. Se você for usá-los, precisará se familiarizar com todos os operadores MULTISET. Saiba mais .