将数据插入refs数组中

时间:2014-07-03 03:29:15

标签: sql oracle oracle11g

我的oracle数据库11g R2具有以下结构:

CREATE TYPE tPessoa AS OBJECT (nome VARCHAR(20), sobrenome VARCHAR(20), idade INTEGER, nacionalidade VARCHAR(20)) NOT FINAL;
CREATE TYPE tTecnico UNDER tPessoa (nTitulos INTEGER);
CREATE TYPE tJogador UNDER tPessoa (posicao VARCHAR(10), numero INTEGER);
CREATE TYPE tListaJogadores IS VARRAY(23) OF REF tJogador;
CREATE TYPE tSelecao AS OBJECT (pais VARCHAR(20), continente VARCHAR(20), tecnico REF tTecnico, jogadores tListaJogadores);

CREATE TABLE jogadores OF tJogador;
CREATE TABLE tecnicos OF tTecnico;
CREATE TABLE selecoes OF tSelecao;

我正在尝试对表INSERT执行selecoes,但我没有意识到如何使用select语句安装ref tListaJogadores列表。以下是我现在正在尝试的内容:

INSERT INTO selecoes VALUES ('Brasil', 'America do Sul', (SELECT REF(e) FROM tecnicos e WHERE e.nacionalidade = 'Brasil'), ?????)

我需要解决方案,我需要放在那个????使我的查询正常。问题仅出在此????上,因为talbe tecnicos上的子查询工作正常。

我希望使用子查询和一些创建REF's列表的函数来解决问题的解决方案。如果jogadores的{​​{1}}只有 1个注册,那么这个解决方案只能 ONLY

nacionalidade

1 个答案:

答案 0 :(得分:1)

这会满足您的需求吗?

INSERT INTO selecoes (pais, continente, tecnico, jogadores)
VALUES ('Brasil', 'America do Sul',
    (SELECT REF(e) FROM tecnicos e WHERE e.nacionalidade = 'Brasil'),
    (SELECT CAST(COLLECT(REF(j)) AS tListaJogadores) FROM jogadores j WHERE j.nacionalidade = 'Brasil')
);