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

qfsb_p 2003-12-11 09:40:28
在系统中的两个用户下用业务程序进行数据复制,就是从一个表全部复制到同样结构的另一个数据库表中,然后我想利用oracle的存储过程对复制的结果进行数据校验(表都有主键),请大家给我提些方案,谢谢。
...全文
637 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
从一个表全部复制到同样结构的另一个数据库表中,怎么可能出现不一致的情况呢?
你说的效验我认为根本就没用。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧