Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment puis-je mettre à jour une colonne à partir d'une table imbriquée en pl/sql ?

La syntaxe est un peu obscure, mais en gros, vous devez manipuler la table imbriquée avec l'opérateur MULTISET.

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

Cela concatène l'ensemble existant de marques avec un nouvel ensemble (dans ce cas, un ensemble d'un seul). Voici une démo LiveSQL (compte Oracle Technet gratuit requis) .

L'avantage de cette approche est qu'il est facile d'ajouter plusieurs valeurs à la fois :

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

Les colonnes de table imbriquées sont astucieuses en principe mais peu pratiques en pratique. Les utiliser dans des instructions SQL peut conduire à un code SQL moche. Si vous comptez les utiliser, vous devrez vous familiariser avec tous les opérateurs MULTISET. En savoir plus .