
用PL/SQL陳述句實作
根據A、B對應的id將A中存為空的資料用B中相同id的資料填充(只改 空 的地方(只有card可能為空))
uj5u.com熱心網友回復:
-- 大概這個樣子begin
for x in(select id from a where name is null) loop
update a
set name = (select name from b where id= x.id);
end loop;
end;
/
uj5u.com熱心網友回復:
在oracle中如果不加限制條件,會對所有記錄進行更新,容易造成你的其他記錄值被更新為null,參考寫法:update tmp a
set a.djh =(select b.qsxz from tmp2 b where a.bsm=b.bsm)
where a.bsm in (select bsm from tmp2)
注:外面的where很重要,否則容易造成資料損壞,自己可以試驗一下
uj5u.com熱心網友回復:
CREATE OR REPLACE procedure p_fill_data(as_log OUT VARCHAR2) --創建存盤程序
IS
CURSOR c_table_a IS SELECT * FROM table_a FOR UPDATE; --定義表a游標
ct c_table_a%ROWTYPE;
BEGIN
OPEN c_table_a;
LOOP
fetch c_table_a into ct;
exit when c_table_a%notfound;
IF ct.card IS NULL OR ct.card = '' THEN --如果為空
UPDATE table_a SET card = (SELECT card FROM table_b WHERE id = ct.id); --從表b更新資料
END LOOP;
CLOSE c_table_a;
as_log:='執行成功!';
COMMIT; --提交
EXCEPTION --例外
when others then
as_log := sqlcode || '--' || sqlerrm;
ROLLBACK;
end p_fill_data;
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/86441.html
標籤:基礎和管理
上一篇:問老哥們一個資料表設計的問題
下一篇:vs連接Oracle服務器
