Thread: OT: array_accum equivalent in Oracle

OT: array_accum equivalent in Oracle

From
Andreas Joseph Krogh
Date:
WARNING: The rest of this post is for somebody who has worked with Oracle and
has migrated to PG, or for some other reason has good experience with Oracle.

I know this is off-topic for this list and should be asked in an Oracle
support-forum, but I don't have access to that, and Uncle Google didn't
return any obvious results, so here it goes...

Anybody knows if Oracle has an equivalent of PG's array_accum or
ARRAY(subselect) construct?

I need a way to accomplish this in Oracle:
select ARRAY(select t.id from table t where t.user_id = u.id) as
id_array, ....

Any hints on where to look in Oracle-docs are welcome.

--
Andreas Joseph Krogh <andreak@officenet.no>
Senior Software Developer / Manager
------------------------+---------------------------------------------+
OfficeNet AS            | The most difficult thing in the world is to |
Karenslyst Allé 11      | know how to do a thing and to watch         |
PO. Box 529 Skøyen      | somebody else doing it wrong, without       |
0214 Oslo               | comment.                                    |
NORWAY                  |                                             |
Tlf:    +47 24 15 38 90 |                                             |
Fax:    +47 24 15 38 91 |                                             |
Mobile: +47 909  56 963 |                                             |
------------------------+---------------------------------------------+


Re: OT: array_accum equivalent in Oracle

From
"Jonah H. Harris"
Date:
On 10/12/07, Andreas Joseph Krogh <andreak@officenet.no> wrote:
> Anybody knows if Oracle has an equivalent of PG's array_accum or
> ARRAY(subselect) construct?

Something like this:

CREATE TYPE varchar2_table_t AS TABLE OF VARCHAR2(32767);
SELECT job, CAST(MULTISET(SELECT ename FROM emp WHERE job = e.job) AS
varchar2_table_t) FROM emp e GROUP BY job;

-- 
Jonah H. Harris, Sr. Software Architect | phone: 732.331.1324
EnterpriseDB Corporation                | fax: 732.331.1301
499 Thornall Street, 2nd Floor          | jonah.harris@enterprisedb.com
Edison, NJ 08837                        | http://www.enterprisedb.com/


Re: OT: array_accum equivalent in Oracle

From
Andreas Joseph Krogh
Date:
On Friday 12 October 2007 17:02:23 Jonah H. Harris wrote:
> On 10/12/07, Andreas Joseph Krogh <andreak@officenet.no> wrote:
> > Anybody knows if Oracle has an equivalent of PG's array_accum or
> > ARRAY(subselect) construct?
>
> Something like this:
>
> CREATE TYPE varchar2_table_t AS TABLE OF VARCHAR2(32767);
> SELECT job, CAST(MULTISET(SELECT ename FROM emp WHERE job = e.job) AS
> varchar2_table_t) FROM emp e GROUP BY job;

Amazing! Works like a charm.
I was envisioning some pretty ugly PL/SQL functions to accomplish this.

Thanks!

--
Andreas Joseph Krogh <andreak@officenet.no>
Senior Software Developer / Manager
------------------------+---------------------------------------------+
OfficeNet AS            | The most difficult thing in the world is to |
Karenslyst Allé 11      | know how to do a thing and to watch         |
PO. Box 529 Skøyen      | somebody else doing it wrong, without       |
0214 Oslo               | comment.                                    |
NORWAY                  |                                             |
Tlf:    +47 24 15 38 90 |                                             |
Fax:    +47 24 15 38 91 |                                             |
Mobile: +47 909  56 963 |                                             |
------------------------+---------------------------------------------+


Re: OT: array_accum equivalent in Oracle

From
"Jonah H. Harris"
Date:
On 10/12/07, Andreas Joseph Krogh <andreak@officenet.no> wrote:
> > Something like this:
> >
> > CREATE TYPE varchar2_table_t AS TABLE OF VARCHAR2(32767);
> > SELECT job, CAST(MULTISET(SELECT ename FROM emp WHERE job = e.job) AS
> > varchar2_table_t) FROM emp e GROUP BY job;
>
> Amazing! Works like a charm.
> I was envisioning some pretty ugly PL/SQL functions to accomplish this.
>
> Thanks!

No problem.

-- 
Jonah H. Harris, Sr. Software Architect | phone: 732.331.1324
EnterpriseDB Corporation                | fax: 732.331.1301
499 Thornall Street, 2nd Floor          | jonah.harris@enterprisedb.com
Edison, NJ 08837                        | http://www.enterprisedb.com/