2

我有以下内容:

CREATE OR REPLACE TYPE mem_type2 IS VARRAY(2) of VARCHAR2(10);
CREATE TABLE test(owntype type1);
INSERT INTO test VALUES (mem_type2('0','A'));  
INSERT INTO test VALUES (mem_type2('1','B'));

所以我的桌子看起来像:

.MEM_TYPE2('Beryl','1')
.MEM_TYPE2('Fred','2')
.MEM_TYPE2('a','3')
.MEM_TYPE2('b','4')
.MEM_TYPE2('c','5')
.MEM_TYPE2('d','6')
.MEM_TYPE2('e','7')
.MEM_TYPE2('f','8')
.MEM_TYPE2('g','9')
.MEM_TYPE2('h','10')
.MEM_TYPE2('i','11')

我想要一些这样的想法:(获得第一个值(第二个......)

select test.owntype(1) // second value

但那当然是错的,怎么是对的?我找不到它。我只搜索 sql,如果可能的话,有人知道吗?

最终目标如下:我必须像上面这样的表格。我想第二个更新第一个。Id 是主键。

4

2 回答 2

1

如果我理解正确,您需要输入

CREATE OR REPLACE TYPE type1 IS OBJECT (id varchar2(2), val varchar2(10));
CREATE OR REPLACE TYPE type2 IS table of type1;

然后你可以以这种方式放置数据

CREATE TABLE test(owntype type2);
INSERT INTO club VALUES (type2 (type1 ('0','A')));  
INSERT INTO club VALUES (type2 (type1 ('1','B')));
于 2015-05-19T11:09:40.213 回答
0

好的,我找到了我想要的方式的解决方案: https ://community.oracle.com/thread/360862

但我发现,这种方式并不是最好的。所以我开始像 Dmitry Samborskyi 那样做

但我有一个问题:如果我跟随我得到的答案不是我想要的。

CREATE OR REPLACE TYPE mem_type AS OBJECT (idmt number, v1 varchar2(20),v2 varchar2(15));
select eric.mem_type(1,'a','b') from dual;

结果:

ERIC.MEM_TYPE(

我当然想要

ERIC.MEM_TYPE('1','a','b')

我的错误在哪里?

于 2015-06-01T09:50:01.827 回答