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;