求教plsql中update数据的问题。
发布网友
发布时间:2022-05-23 14:28
我来回答
共3个回答
热心网友
时间:2023-10-25 01:41
建议使用plsql块来写:
begin
--先查出A表中的记录(存在相关B表的记录为前提,避免无用数据),进行循环
for item in (select id, 得分1, 得分2, 得分3 from A where exists(select 1 from B where A.id = B.id)) loop
--然后判断每次循环的值,进行update
if nvl(item.得分1, 0) <> 0 then
update B set 最终得分 = item.得分1 where id = item.id;
elsif nvl(item.得分2, 0) <> 0 then
update B set 最终得分 = item.得分2 where id = item.id;
else
update B set 最终得分 = item.得分3 where id = item.id;
end if;
end loop;
end;
-- 如果在plsql中控制事务,需要commit
commit;
有疑问发追问。
热心网友
时间:2023-10-25 01:41
UPDATE
B
SET
最终得分 = (
SELECT
NVL( 得分1, NVL( 得分2, NVL( 得分3, 0)))
FROM
A
WHERE
A.ID = B.ID
);
没测试过, 估计着写的.
热心网友
时间:2023-10-25 01:41
DECLARE
w_count INTEGER;--接收分数
BEGIN
SELECT id INTO w_count FROM A ;
CASE w_count
WHEN 0 THEN UPDATE语句
WHEN 1 THEN UPDATE语句
WHEN 2 THEN UPDATE语句
以此类推谢谢
END CASE;
END;