在基于查询构造的对象构造中插入数组

Posted

技术标签:

【中文标题】在基于查询构造的对象构造中插入数组【英文标题】:Inserting an array within an object construction, constructed based on a query 【发布时间】:2009-05-02 15:14:21 【问题描述】:

如果我还需要在父对象中插入值,如何使用查询构造对象?

显然我使用了错误的语法。

已编辑,越来越近:

insert into myTable
select
    mybigtype('foo', 'bar', 'fizzle', myarrayoflittletypes(
        select ref(S)
        from anotherTable S
        where S.stname='dingle'
            or S.stname='fangle')));

mylittletype 被创建为:

CREATE TYPE myarrayoflittletypes AS VARRAY(20) OF REF mylittletype

另一个表被创建为:

CREATE TABLE anotherTable OF mylittletype

mybigtype 有一些字符串和一个类型,该类型被定义为保存对 mylittletype 对象的引用数组。因此,我希望能够在此表中插入一行,该行创建一个 mybigtype 类型的对象,其数组基于我定义的查询构造。我可以在一次插入中完成所有这些吗?还是我需要放入一个空占位符并随后更新此字段?

甲骨文目前的投诉是

ORA-01427: single-row subquery returns more than one row

那么我怎样才能将这个查询的多个 OID 返回到我正在构建的对象中的数组中呢?

【问题讨论】:

【参考方案1】:

你几乎拥有它!

insert into myTable
select 
    mybigtype('foo', 'bar', 'fizzle', myarrayoflittletypes(
        (select
            ref(S.mylittletype)
        from anotherTable S
        where S.mylittletype.stname='dingle
            or S.mylittletype.stname='fangle')));

【讨论】:

非常感谢,这让我了解了大部分情况 - 此查询返回多行,我想将它们分别添加到数组中。这可能吗? 我有点困惑,因为数组应该将子查询中返回的所有行添加到 myarrayoflittletypes。是什么给了您超出预期的价值? (select ref(S) * ERROR at line 5: ORA-01427: single-row subquery returns more than one row 我应该使用不同的关键字来指示应该添加所有行吗? 另外,外部的 select 语句需要从某些东西中选择——我选择的东西有关系吗? 您如何处理数组创建,因为它在返回多行时犹豫不决? myarrayoflittletypes() 是解析结果并将它们放入串联列表的用户定义函数吗?而外部选择只是将值包装到一个选择语句中,因此如果需要,您可以拥有多行。【参考方案2】:

可能有更好的方法来做到这一点,以便我可以从单个查询中将多行插入到我的数组中,但以下方法有效:

insert into myTable
    values(mybigtype('foo', 'bar', 'fizzle', myarrayoflittletypes(
        (select ref(S)
        from anotherTable S
        where S.stname='dingle'),
        (select ref(S)
         from anotherTable S
         where S.stname='fangle'))));

【讨论】:

以上是关于在基于查询构造的对象构造中插入数组的主要内容,如果未能解决你的问题,请参考以下文章

hibernate入门---Hibernate查询方式(for循环构造器对象数组等)第三天,相当于总结整合

如何使用 Apollo Query 构造 React 代码,以便随机查询的对象数组不会随着状态变化而重新呈现?

在 graphQL 中提交对象数组作为查询变量

JDK源码分析——HashMap 上(基于JDK7)

Django ORM:构造查询,该查询将在多对多字段的最后位置的对象中的字段上查找匹配项

PHP 构造函数包含用于构建对象的数据库查询,好/坏?