gpt4 book ai didi

database - 我如何在 pl/sql 的列中向我的 varray 列表添加一个值?

转载 作者:搜寻专家 更新时间:2023-10-30 23:30:41 25 4
gpt4 key购买 nike

我正在尝试使用多重集联合向名为 burse 的 varray 数字列表添加一个值,但我收到此错误。 [ Istoric is my column name and bure is the type (varray of numbers) 1

但是当我插入一个值时它起作用了。示例:enter image description here

我做错了什么?

这就是我声明和插入列 enter image description here 的方式

最佳答案

这应该可以...

update student 
set istoric = istoric multiset union all bure(42, 23)
where id = 1

...除了您现在使用的是 VARRAY(而不是您拥有的嵌套表 in your previous question )。所以你得到一个错误信息:

ORA-00932: inconsistent datatypes: expected UDT got BURE

原因是,according to the documentation :

"While nested tables can also be changed in a piecewise fashions, varrays cannot....However, you cannot update or delete individual varray elements directly with SQL; you have to select the varray from the table, change it in PL/SQL, then update the table to include the new varray." (emphasis mine)

这是因为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com