如何在oracle中使用不同的where条件更新多个行

时间:2016-11-11 20:27:02

标签: c# oracle oracle-sqldeveloper

我在c#中有一个int列表和一个字符串列表,其中int是主键,string是name。

例如:{1,2},{“拳头”,“第二”}

update table set name ="first" where id =1  
update table set name = "second" where id=2

我需要使用该过程更新oracle中的值。

假设我有如下过程,列表作为数组传递给varchar

程序updateName
 (
  id IN VARCHAR,
  名称IN VARCHAR
 )
  IS    BEGIN
 END updatename。

如果不使用案例陈述

,我应该暗示的逻辑是什么

2 个答案:

答案 0 :(得分:1)

好吧,也许你有一张桌子(其名字最好不是“桌子”!) - 让我们说它叫做tbl,至少有两列,id和name。你有一个字典,列id和名称(或任何其他列名)。

然后 - 使用merge语句:

merge into tbl
  using dictionary
    on (tbl.id = dictionary.id)
when matched then
  update set name = dictionary.name
;

您还可以使用update语句,但当更新从另一个表中读取时,merge更易于阅读和维护,有时也可能更有效。

答案 1 :(得分:0)

标准的SQL方式是:

UPDATE table 
SET name =
    CASE WHEN id=1 THEN "first" 
    CASE WHEN id=2 THEN "second"
    END
WHERE id IN (1,2)

另一种选择是创建临时表,插入所有键值对,并在JOIN语句中执行UPDATE