0
我使用的是Oracle版本 Oracle數據庫11g企業版發佈11.2.0.1.0 - 64位生產插入記錄新添加的列
我已經裝箱了一個名爲表,XY插入值,然後又增加了一列。現在我只想將值添加到新添加的列。是否有可能在不使用更新的情況下向新列添加值。
create table xy(x1 number, y1 number);
insert into xy(x1,y1) values(1, 1);
insert into xy(x1,y1) values(2, 2);
insert into xy(x1,y1) values(3, 3);
select * from xy;
X1 Y1
---------- ----------
1 1
2 2
3 3
現在我再向此表中添加一列。
alter table xy add z1 number;
現在,我需要爲新添加的列(z1)添加值。
我試着用下面的方法做,但是隻插入新的行,是的我知道如果我們使用insert,它只會添加新的行。
Declare
TYPE xy_type is table of xy%rowtype index by PLS_Integer;
xyt xy_type;
x number;
y number;
Begin
select * bulk collect into xyt from xy;
x := 1;
y := xyt.count;
for i in x..y loop
insert into xy (x1, y1, z1) values(xyt(i).x1, xyt(i).y1, i);
End Loop;
End;
所以,只要看看有沒有使用更新的任何替代方法,可能是與集合或SQL的幫助。
感謝您的幫助提前。
MERGE INTO xy dst
USING (SELECT ROWID AS rid, ROWNUM AS rn FROM xy) src
ON (src.RID = dst.ROWID)
WHEN MATCHED THEN
UPDATE SET z1 = rn;
它不使用UPDATE
語句,但它會在匹配的行更新值:
'Insert'會添加新行。您需要使用現有行更新新表的值。 Google爲此降低了「合併」聲明。這裏不需要PLSQL – XING
爲什麼你不想使用'update'?這是簡單的單線聲明來獲得您的結果。 –
即使您要使用集合,表中的行也只能是'更新'。您可以使用MERGE,但技術上也將執行更新。您不想使用更新的任何特定原因? –