描述:
通过输入一个codeid 和日期,比较a和b表的某些字段的数据是否一致,a表和b表都有codeid和日期,把不一致的输出出来。
通过输入一个codeid 和日期,比较a和b表的某些字段的数据是否一致,a表和b表都有codeid和日期,把不一致的输出出来。
解决方案 »
- 如何把PLSQL Develper恢复默认设置或者彻底删除
- 关于linux下用OTL库C++开发ORECLE数据库程序的问题,急!
- 插入数据出错 vb.net
- 求教,10g中我开启了归档模式,但并未更改归档日志目标位置,那么默认的文件存档位置在哪,在oem中有10个位置的空格,在最后一行有默认的
- 谁有p3006854_9204_LINUX.zip包,谢谢!
- 求一SQL,高手请进!
- 100分急求简单的Oracle字段更新问题
- oracle这个报错怎么解决
- php怎样连接到远端(某个IP上)的oracle数据库?
- 送分问题(关于日期格式的,不知道放在这里适不适合,jsp+servlet+orcle),还请赐教!!!
- 关于一些命令,大家进来帮我解释一下....
- Oracle有没有免费客户端开发工具?
time
name
from a full outer join b
on (a.codeid=b.codeid and a.datecol=b.datecol)
where a.col is not null
and b.col is not null
union all
select ... , 'b' tablename from b where not exists(select 1 from a where ...)
as
v_res number;
v_name a.name%type;
begin
select nullif(a.name, b.name)
into v_name
from a join b
on(a.id=b.id and a.time=b.time)
where a.id=p_id and a.time=p_time;
if v_name is null then
return 1;
else
return 0;
end if;
exception when others then
return 0;
end;
/
create or replace function compare_data(p_id number, p_time date) return number --返回1表示一样,0为不一样
as
v_res number;
v_name a.name%type;
begin
select nullif(a.name||a.address, b.name||b.address)
into v_name
from a join b
on(a.id=b.id and a.time=b.time)
where a.id=p_id and a.time=p_time;
if v_name is null then
return 1;
else
return 0;
end if;
exception when others then
return 0;
end;
/
as
v_res number;
address varchar2;
v_name a.name%type;
begin
select nullif(a.name||a.address, b.name||b.address)
into v_name,address
from a join b
on(a.id=b.id and a.time=b.time)
where a.id=p_id and a.time=p_time;
if v_name is null then
return 1;
else
return 0;
end if;
exception when others then
return 0;
end;
/
是这样吗?
上面的红色字是不用的
nullif(a.name||a.address, b.name||b.address)只会得到一个值,而不是两个值,这里是把name和address组合在一起了.
你可以用你的a表和b表试一试,实践最重要