我正试图使用multiset union在名为burse
的varray数字列表中再添加一个值,但我得到了这个错误。[1
但当我插入一个值时,它就起作用了。示例:
我做错什么了?
这就是我如何声明并插入到
最佳答案
这应该管用…
update student
set istoric = istoric multiset union all bure(42, 23)
where id = 1
…除了您现在使用的是varray(而不是您拥有的嵌套表)。所以您会收到一条错误消息:
ORA-00932:不一致的数据类型:预期的UDT GOT BURE
原因是,in your previous question:
“虽然嵌套表也可以分段更改,但varray不能…..但是,不能直接用sql更新或删除单个varray元素;必须从表中选择varray,在pl/sql中更改它,然后更新表以包含新的varray。”(强调我的表)
这是因为varray是有序集,而嵌套表不是。除非有严格的要求来维护元素的顺序,否则最好使用嵌套表,而不是varray:它们只是更方便。
下面是如何使用pl/sql更新varray的方法:
declare
lv bure;
cnt pls_integer;
begin
select istoric into lv
from student
where id = 1;
cnt := lv.count();
lv.extend();
lv(cnt+1) := 23 ;
lv.extend();
lv(cnt+2) := 69 ;
update student
set istoric = lv
where id = 1;
end;
/
关于database - 我如何在pl/sql的列中为我的varray列表添加一个值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49476778/