如何通过字符串比较条件PL / SQL更新字符串值

时间:2016-06-15 11:14:58

标签: oracle plsql

我希望更新表格中的所有值,但这可能会导致我的数据库被删除

UPDATE Table_1
SET Value  =  'Some string with but changed' 
where value = 'Some string without changes'; 

我是否可以通过程序执行此操作,并确保它不会在无限期内执行请我提供一些提示?

修改

我读过有关游标的内容,但我怎样才能使用游标

2 个答案:

答案 0 :(得分:2)

您的SQL似乎很好,这是首选的解决方案。光标通常会慢得多。

如果您无法创建索引并且上面的更新确实很慢,请尝试以下操作。考虑到我没有其余的表定义可供使用,我假设您的主键是一个名为ID的单个字段:

首先,创建一个只包含匹配记录的临时表:

CREATE TEMPORARY TABLE temp as
  SELECT * 
  FROM Table_1
  WHERE value = 'Some string without changes';

然后,使用此临时表进行更新:

UPDATE Table_1 SET 
  Table_1.Value = 'Some string with but changed'
WHERE EXISTS (
  SELECT *
  FROM Temp 
  WHERE Temp.ID = Table_1.ID
);

答案 1 :(得分:0)

如果您的数据库高于11g R1版本,则采用另一种方法。 Oracle提供了一个名为DBMS_PARALLEL_EXECUTE的漂亮软件包,它用于大型DMLS或任何可以拆分成块的进程,并且可以并行完成。