假设我在One数组中有一些值,我创建了具有相同值的数组2,现在我想用新数组值替换旧数组。 (假设我在新数组值中做了一些更改,我想用新的数组值完全替换旧的aaray值。)
TYPE c_sncode_list IS VARRAY(10000) OF VARCHAR(1000);
c_v_sncode c_sncode_list;
c_v_sncode_update c_sncode_list;
cou NUMBER := 1;
/* Have c_v_sncode polulated with some value */
FOR J IN c_v_sncode.FIRST .. c_v_sncode.LAST
LOOP
c_v_sncode_update.extend;
c_v_sncode_update(cou) := c_v_sncode(J);
cou := cou + 1;
END LOOP;
c_v_sncode := c_v_sncode_update; -- Is this Correct way?
答案 0 :(得分:0)
请检查这是否有帮助。
Ur语句是正确的复制,但在for循环中你使用的是未初始化的c_v_sncode,实际上两个数组都没有初始化。这将使你的下标超出数量"错误
在没有使用扩展或在初始化中放置一些值的情况下,你也无法进行循环和数组。这会给你数字或值错误
declare
TYPE c_sncode_list IS VARRAY(10000) OF VARCHAR(1000);
c_v_sncode c_sncode_list;
c_v_sncode_update c_sncode_list := c_sncode_list(1,2,3,4,5); -- initialize it and put some values in c_v_sncode_update
cou NUMBER := 1;
/* Have c_v_sncode polulated with some value */
begin
/* print values in c_v_sncode_update*/
for i in c_v_sncode_update.first .. c_v_sncode_update.last loop
dbms_output.put_line(c_v_sncode_update(i)) ;
end loop ;
c_v_sncode := c_v_sncode_update ;
/* print values in c_v_sncode*/
for i in c_v_sncode.first .. c_v_sncode.last loop
dbms_output.put_line(c_v_sncode(i)) ; -- Is this Correct way?
end loop;
end ;