2016-08-17 84 views
0

我有一個表名作爲燦如何更新循環表

Internal_id not null VARCHAR2(10) 
RCR   not null VARCHAR2(10) 
IVC.   not null VARCHAR2(10) 

目前還列沒有值RCR

的值存儲在列INTERNAL_ID就像

SER00001 
SER00002 upto SER00093 

我需要相應地更新RCR到internal_id

與SER00001一樣,它將是SERSRV00001

SER00002 it will be SERSRV00002 

我能做到這一點像更新可以在那裏

RCR = lpad(Internal_id,3)||'SRV'||substr(Internal_id,4,6) where Internal_id = 'SER00001' 

如何循環更新,而不是寫了這麼多的更新語句

回答

0
update MyTable set RCR = substr(Internal_id, 1, 3) || "SRV" || substr(Internal_id, 4); 

你可以先做一個select以確保它做的是正確的事情:

select substr(Internal_id, 1, 3) || "SRV" || substr(Internal_id, 4) from MyTable; 
0

Ofcourse解決您的查詢的正確方法是使用@Kusalananda提到的SQL語句。但是,如果您專門想要在循環中執行此操作(Oracle PL/SQL),那麼您也可以使用這種方式:

begin 
    for i in (select * from can) 
     loop 
     update can 
     set RCR = substr(i.Internal_id, 1, 3) || "SRV" || substr(i.Internal_id, 4) 
     where Internal_id = i.Internal_id; 

     commit; 
    end loop; 
    end;