如何解决Oracle数据库中的数据出错?
1。 将测试库的taw_rm_user表用CREATE TABLE AS语句导到一个临时的备份表中(测试库中的用户表也不能乱改);
2。 再将taw_rm_user表删除;
3。 然后将DMP备份文件的taw_rm_user表用IMP命令导入到comtest下;
4。 再自己编写一个PL/SQL程序块,通过使用游标循环,将这个新导入的表中的password字段更新到com。taw_rm_user表的对应记录中。注意,这里只更新对应记录,对新加入的用户记录不作任何修改;
5。 再将之前备份的taw_rm_user表恢复到comtest下即可。
其中使用的两段关键语句如下:
-- 备份...全部
1。 将测试库的taw_rm_user表用CREATE TABLE AS语句导到一个临时的备份表中(测试库中的用户表也不能乱改);
2。 再将taw_rm_user表删除;
3。 然后将DMP备份文件的taw_rm_user表用IMP命令导入到comtest下;
4。
再自己编写一个PL/SQL程序块,通过使用游标循环,将这个新导入的表中的password字段更新到com。taw_rm_user表的对应记录中。注意,这里只更新对应记录,对新加入的用户记录不作任何修改;
5。
再将之前备份的taw_rm_user表恢复到comtest下即可。
其中使用的两段关键语句如下:
-- 备份测试库中的taw_rm_user表
create table comtest。taw_rm_user_bak
as
select * from comtest。
taw_rm_user
-- 恢复正式库中的taw_rm_user。password字段
declare
rec_comtest comtest。taw_rm_user%rowtype;
cursor cur_comtest is
select * from comtest。
taw_rm_user;
begin
open cur_comtest;
loop
fetch cur_comtest into rec_comtest;
exit when cur_comtest%notfound;
update com。
taw_rm_user
set com。taw_rm_user。password=rec_comtest。password
where com。taw_rm_user。user_id=rec_comtest。
user_id;
end loop;
close cur_comtest;
commit;
end;。收起