0

我收到以下错误:AeSymResolveStatement [775] ... 语句 (108,512) 中位置 34338 处或附近的 Meta-SQL 错误。SQL 语句本身的长度超过 40,000 个字符,因此是个问题。

数据库是甲骨文。在工具 8.49.24 上运行。

4

4 回答 4

2

我知道在应用程序引擎(SQL 步骤)中使用的 SQL 的大小是有限制的。我曾经在应用程序引擎中尝试使用异常长的 SQL 时收到类似的错误。

如果同样的限制适用于 SQL 对象,我不会感到惊讶。

为了解决这个问题,我能够将 SQL 拆分为 2 个(是一个更新语句)。希望这在您的情况下也是可能的。

于 2010-09-28T09:18:43.263 回答
1

没有这样的限制。

您可以通过创建如下 SQL 自行确认:

select 'x' from PS_INSTALLATION where 
      1 = 1 and 
      1 = 1 and
      1 = 1 and
      1 = 1 and
      /* ... copy paste '1 = 1 and' 90000 times or so times more */
      1 = 1

尽管它使 pside 很慢,但它可以很好地保存和验证。

于 2009-12-10T08:50:42.667 回答
1

PeopleCode 中存在限制,主要是由于字符串长度的限制,但是我从未发现存储 SQL 语句的限制。

于 2009-12-21T21:51:31.727 回答
0

就个人而言,我会考虑以某种方式将声明分解成碎片。

你可以:

  • 使用 App Engine 的内置循环机制
  • 混合使用 SQL 和 PeopleCode
  • 使用临时表并执行中间 SQL,存储在临时表中

除了让您的数据库心脏病发作之外,当 DBA 在 SQL 监视器中看到该语句时,更别提他了。如果您不得不再次查看该声明,您正在为自己节省一个痛苦的世界。

我认为 App Engine 中的 SQL 以 long 形式存储,因此在 Oracle 下它将是 4GB,在 DB2 下同样巨大。

于 2013-03-18T17:28:47.587 回答