Database 如何从pl/sql中的嵌套表更新列?
我试图在一个表中创建一列,它可以像这样存储多个值 我有一个学生有一个Database 如何从pl/sql中的嵌套表更新列?,database,oracle,user-defined-types,Database,Oracle,User Defined Types,我试图在一个表中创建一列,它可以像这样存储多个值 我有一个学生有一个id\u std和一个名为marks的列,该列可以接受几个值,比如2,3,4。我想更新此列表以添加另一个标记,使2,3,4,5,但我不知道如何更新 如何更新列标记以添加新标记而不删除以前的值?这是我的密码: CREATE OR REPLACE TYPE NumberList IS TABLE OF number(5); / DROP TABLE test; CREATE TABLE test ( id_std int
id\u std
和一个名为marks
的列,该列可以接受几个值,比如2,3,4
。我想更新此列表以添加另一个标记,使2,3,4,5
,但我不知道如何更新
如何更新列标记
以添加新标记而不删除以前的值?这是我的密码:
CREATE OR REPLACE TYPE NumberList IS TABLE OF number(5);
/
DROP TABLE test;
CREATE TABLE test (
id_std int
, marks NumberList )
Nested table marks store as numere_necesare;
insert into test(id_std, marks )
values (1,NumberList(6,7,8));
语法有点模糊,但基本上您需要使用MULTISET操作符操作嵌套表
update test
set marks = marks multiset union all numberlist(42)
where id_std = 1
这会将现有标记集与新标记集(在本例中为一组标记)连接起来。这是
这种方法的优点是可以轻松地一次添加多个值:
update test
set marks = marks multiset union all numberlist(23, 69)
where id_std = 1
嵌套表列原则上很聪明,但实际上很笨拙。在SQL语句中使用它们可能会导致一些丑陋的SQL语句。如果要使用它们,您需要熟悉所有多集运算符 可以尝试以下方法:
insert into table( select marks from test where id_std = 1 ) values ( 5 );
此语法确实适用于将单个值附加到现有的
标记
(这是OP要求的)。但是,它不支持在同一语句中添加多个值