我想要一些关于SQLJ的帮助(是的......)。我正在谷歌搜索如何在这个 inline-java SQL 中重现递归 SQL 查询。也欢迎参考,因为它也很难找到......
我的 SQL 查询:
WITH attachedemails(id, subject, filename)
AS (
-- Ancora (224)
SELECT email
FROM (SELECT addressee.email AS email
FROM addressee
WHERE addressee.email->from
IN (SELECT address
FROM use
WHERE use.user->nickname = User.nickname <arg>)
UNION
SELECT addressee.email
FROM addressee
WHERE addressee.to
IN (SELECT address
FROM use
WHERE use.user->nickname = = User.nickname <arg>)))
AS t
WHERE email->DATE >= FROM <arg> AND email->DATE <= TO <arg> )
UNION ALL
SELECT m.id
FROM email AS m,
attachedemails AS c
WHERE m.contained_in = c.id
AND m.DATE >= FROM <arg> AND email->DATE <= TO <arg> ))
基本上,我收到了来自某个给定用户的所有电子邮件,并在其他电子邮件中附加了电子邮件。我标记了我的 Java 参数,我应该用它来过滤结果。
我知道,为了使用 SQLJ 返回多行,我们需要一个迭代器,并且我可以在子查询中对它们进行不同级别的处理,但是递归非常难以模拟。也许还有其他一些我不知道的专门针对 SQLJ 的构造。我希望有人能帮帮忙!