- 论坛徽章:
- 0
|
高手指教如何使包含对象类型列的表按某个属性字段唯一化
你的意思是不是name,adress相同,sdo_geometry不同,取唯一的一条记录,这可以用PL*SQL实现.
1,建表test
create table test (
name varchar(2),
address varchar(2),
sdo_geometry varchar(2));
create table test1 (
name varchar(2),
address varchar(2),
sdo_geometry varchar(2));
(test1用于存放中间数据)
2,插入测试数据
3,输入程序 test.sql
declare
cursor p is
select name,
address,
sdo_geometry
from test
order by name,address;
new_name varchar(2);
new_address varchar(2);
new_sdo_geometry varchar(2);
old_name varchar(2); --用于测试name是否变化
old_address varchar(2); --用于测试name是否变化
begin
open p;
old_name := '-1'; --取没有的字符串
old_address := '-1'; --取没有的字符串
loop
fetch p into new_name,new_address,new_sdo_geometry;
exit when p%notfound;
if (new_name != old_name or new_address != old_address) then
insert into test1 values(new_name,new_address,new_sdo_geometry);
end if;
commit;
old_name := new_name;
old_address := new_address;
end loop;
end;
/
本程序已测试通过,不过很繁,请高手给出更简单的方法. |
|