17,377
社区成员
发帖
与我相关
我的任务
分享
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;