如何在 Informix 的未命名行中嵌套 MULTISET?
How to nest MULTISET in unnamed ROW in Informix?
鉴于此架构:
create table t (i int);
create table u (i int, j int);
insert into t values (1);
insert into t values (2);
insert into u values (1, 10);
insert into u values (2, 20);
我认为以下查询是正确的:
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
但它会产生一些未指定的内部错误:
SQL Error [IX000]: User Defined Routine (collectionsend) execution failed.
这是记录在案的限制吗?我该如何解决这个问题?我正在使用 IBM Informix 动态服务器版本 14.10.FC5DE
一个解决方法可能是像这样将整个东西包装在一个虚拟的 MULTISET
中,这似乎可行:
select multiset(
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
);
但是,当再次取消嵌套辅助多重集时,旧错误出现了。这不起作用:
select * from table(multiset(
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
)) t;
鉴于此架构:
create table t (i int);
create table u (i int, j int);
insert into t values (1);
insert into t values (2);
insert into u values (1, 10);
insert into u values (2, 20);
我认为以下查询是正确的:
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
但它会产生一些未指定的内部错误:
SQL Error [IX000]: User Defined Routine (collectionsend) execution failed.
这是记录在案的限制吗?我该如何解决这个问题?我正在使用 IBM Informix 动态服务器版本 14.10.FC5DE
一个解决方法可能是像这样将整个东西包装在一个虚拟的 MULTISET
中,这似乎可行:
select multiset(
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
);
但是,当再次取消嵌套辅助多重集时,旧错误出现了。这不起作用:
select * from table(multiset(
select
t.i,
row(
multiset(
select * from u where u.i = t.i
)
) r
from t
order by t.i
)) t;