【发布时间】:2014-09-17 16:00:18
【问题描述】:
我正在尝试自动执行一系列查询。一个查询,比如 Q1,是有问题的,因为它在 select 语句之前创建了一个易失的表。在 TeraData 中,Q1 运行良好,但是通过 VBA 将 Q1 传递给 TeraData 时出现错误:
只有在 DDL 语句之后的 ET 或空语句是合法的。
Q1 的形式为:
create multiset volatile table volatileTable,
no fallback,
no before journal,
no after journal,
(
a1,
a2,
a3,
a4,
a5
) as
(sel
b1,
b2,
b3,
min(b4) as a1,
min(b5) as a2
from
db.table
where
b6 = 'condition'
group by
b1,
b2,
b3
)
with data
on commit preserve rows;
sel
c1,
c2,
c3
from
db.table
group by
1,
2
union
sel
d1,
d2,
d3
from
(sel
e.f1,
e.f2,
e.f3,
e.a1,
s.a1,
e.a2,
s.a2,
e.a3,
s.a3,
e.a4,
s.a4,
e.a5,
s.a5
from
db.table) as e
left outer join volatileTable as s
on
e.a1 = s.a1
e.a2 = s.a2
e.a3 = s.a3
e.a4 >= s.a4
e.a5 <= s.a5
group by
1,
2
union
sel
g1,
g2,
g3
from
db.table
group by
1,
2
union
...
问题在于在 VBA ADODB.Command.Execute() 语句中创建易失性表。关于如何解决这个问题的任何想法?
【问题讨论】:
标签: sql vba teradata volatile recordset