• 全部
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流
  • 问答

怎么样用存储过程做数据正确性校验?

qfsb_p 2003-12-11 09:40:28
在系统中的两个用户下用业务程序进行数据复制,就是从一个表全部复制到同样结构的另一个数据库表中,然后我想利用oracle的存储过程对复制的结果进行数据校验(表都有主键),请大家给我提些方案,谢谢。
...全文
208 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qfsb_p 2003-12-17

beckham:
select dbms_lob.substr(image) from table where rownum < 2

The following error has occurred:

ORA-06502: PL/SQL: 数字或值错误 : 原始变量长度太大
ORA-06512: 在line 1
怎么说dbms_lob.substr不行?
回复
2dian1G 2003-12-17
复制时采用事务机制,应该不会有数据不一致的情况出现。

至于校验,统计记录数、对每一条记录做字段长度(用lengthb)的求和,也都不能100%确定一致,绝对的一致,就是逐个记录逐个字段值的比较。
回复
LGQDUCKY 2003-12-15
把表删除了,再建立CREATE TABLE AAA AS SELECT * FROM AAA1;
这样肯定不会错,不过不是提倡的方法。。。
回复
qfsb_p 2003-12-14
谢谢beckham的注意,我试试先!
回复
beckhambobo 2003-12-14
DBMS_RECTIFIER_DIFF:
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96612/d_recdi2.htm#93834

Note:
This procedure cannot be used on LOB columns, nor on columns based on user-defined types.

所以你说的牛人解决不了.
create table a (id varchar2(10),name varchar2(20),photo clob)
insert into a values(...);
create table b (id varchar2(10),name varchar2(20),photo clob)
insert into b values(...);

create procedure pro
as
begin
select count(1) into num from (select id,name,dbms_lob.substr(photo) photo from a
minus
select id,name,dbms_lob.substr(photo) from b);
if num>0 then
....
end if;
end;
/
回复
qfsb_p 2003-12-12
我想要的校验就是针对每条记录进行比较,看是否完全一样,也就是看复制过来的数据是否正确。

统计记录数是一方面,然后每条记录是否正确也要考虑。

我最开始是想在两个表中正对每一条记录做字段长度(用lengthb)的求和,然后根据主键比较,可是这个方法我觉得比较麻烦,效率也不高。

请再次指教!
谢谢
回复
shuipipi 2003-12-12
能不能通过简单地统计源和目的库中各个表的记录数来校验?
回复
jiezhi 2003-12-12
不知道是什么样的校验呢?
只要可以在select statement中出现的,就可以用minus
回复
qfsb_p 2003-12-12
我个人up一下
是不是可以用minus来实现?可是我的数据表中可能有大对象的数据,minus好像不能用于大对象的。

再次请高手指点,分不是问题,搞定再加100分。
回复
chanet 2003-12-12
select * from a minus select * from b;
-------------------------------------------------
用 minus 关键字,查找 a 表中与 b 表中的不同记录.
回复
qfsb_p 2003-12-12
有个牛人说DBMS_RECTIFIER_DIFF包可以实现

包中有一个DIFFERENCES 方法
This procedure determines the differences between two tables

哪位用过这个package的,指点下。
回复
qiyousyc 2003-12-12
从一个表全部复制到同样结构的另一个数据库表中,怎么可能出现不一致的情况呢?
你说的效验我认为根本就没用。
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2003-12-11 09:40
社区公告
暂无公告