/*alter table schematics
add type_id NUMBER;*/
begin
for i in (
select a.id,
substr(a.key,
instr(a.key, '|') + 1,
(instr(a.key, '|', 1, 2) -
(instr(a.key, '|', 1, 1) + 1))) TYPE_ID
from schematics a)
loop
update schematics
set type_id = TYPE_ID;
end loop;
)
end
大家好,您能帮帮我吗?TYPE_ID给了我很多ID,我想使用for循环将它们存储在我新创建的列中。第一次使用for in sql,不知道该怎么做。有什么帮助吗?提前致谢。
您正在尝试使用从另一列计算出的值更新新创建的列。通常只需进行一次更新即可完成:
update schematics
set type_id =
substr(key,
instr(key, '|') + 1,
instr(key, '|', 1, 2) - instr(key, '|', 1, 1) - 1);
如果要在PL / SQL中对每条记录进行循环操作,请选择键和计算值以将两者用于更新。但这似乎太过分了。
begin
for rec in
(
select distinct
key,
substr(key,
instr(key, '|') + 1,
instr(key, '|', 1, 2) - instr(key, '|', 1, 1) - 1) as type_id
from schematics
) loop
update schematics
set type_id = rec.type_id
where key = rec.key;
end loop;
end;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句