我在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。
如果不使用案例陈述
,我应该暗示的逻辑是什么答案 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
。