使用列大小更新LOOP

时间:2012-04-13 07:48:43

标签: oracle plsql

我尝试创建PL / SQL脚本,用脚大小更新我的表。 我的表看起来像这样:

| ID | TEXT | SIZE |
--------------------
| 1  | .... | null |
| 2  | .... | null |
| 3  | .... | null |
...

我希望PL / SQL脚本根据特定文档的文本长度填充大小列,然后删除TEXT列的内容。

这是我尝试过的:

DECLARE 
cursor s1 is select id from table where size is null; 
BEGIN  for d1 in s1 loop
    update table set size = (select length(TEXT) from table where id = d1) where id=d1;  
end loop; 
END; 
/

1 个答案:

答案 0 :(得分:4)

除非有充分的理由,否则请在纯SQL中执行此操作(或将以下语句放入PL / SQL):

UPDATE t
SET size = LENGTH(text),
    text = NULL
WHERE size IS NULL;

这更容易阅读和更快。