oracle中只存储两年数据,Oracle中作为永久存储机制的嵌套表的数据追加

头几天有人问了一个问题:

--创建类型minutiae

create OR REPLACE type minutiae_t as object(x number(3,0),y number(3,0),t varchar2(10),theta number(6,2));

/

--创建类型minutiaeset

create OR REPLACE type minutiaeset_t as table of minutiae_t;

/

--创建表tb_f

create table tb_f(fingerId NVARCHAR2(50),minutiaeSet minutiaeset_t)

nested table minutiaeSet store as minutiaeSettab;

/

--创建过程,向表中插入数据

create or replace procedure insert_into_minutiaeset_t

as

mydata minutiaeset_t;

begin

mydata:=minutiaeset_t(minutiae_t(1,3,'end',2.1));

insert into tb_f values('102.bmp',mydata);

end;

/

--更新嵌套表数据

declare

mydata minutiaeset_t;

begin

mydata:=minutiaeset_t(minutiae_t(1,3,'end',2.1));

update tb_f set minutiaeSet=mydata where fingerId='102.bmp';

end;

/

问题是如何根据查询条件在嵌套表中追加数据?例如,想要在fingerId='102.bmp'的一行中,追加特征点数据。

--------------------------

以我的能力可以给出两种解决方法:

--方法1:

select * from table(select minutiaeset from tb_f where fingerid='102.bmp');

X    Y T             THETA

---- ---- ---------- --------

1    3 end            2.10

insert into table(select minutiaeset from tb_f where fingerid='102.bmp') values(minutiae_t(5,7,'start',3));

1 row inserted

select * from table(select minutiaeset from tb_f where fingerid='102.bmp');

X    Y T             THETA

---- ---- ---------- --------

1    3 end            2.10

5    7 start          3.00

--方法2:

CREATE OR REPLACE PROCEDURE proc_append_minutiaeset_t(newvalue minutiae_t,search_value VARCHAR2)

AS

temp_nested_table minutiaeset

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值