PeopleSoft App Engine SQL 步骤/操作中的 SQL 文本是否有大小限制?
-
20-09-2019 - |
题
我收到以下错误:AeSymResolve 语句 [775] ...语句 (108,512) 中位置 34338 处或附近的元 SQL 错误。SQL 语句本身超过 40,000 个字符长,因此产生了问题。
数据库是oracle。在工具 8.49.24 上运行。
解决方案
有没有这样的限制。
您可以通过创建像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
虽然这让p侧相当缓慢,这保存和验证就好了。
其他提示
我知道有关于在应用引擎(SQL步骤)中使用的SQL的大小的限制。我曾经收到了类似的错误,而试图用一个非常长的SQL中的应用程序引擎。
如果该相同的限制适用于SQL对象我不会感到惊讶。
要解决这个问题,我能够在SQL分成2(状态更新语句)。希望你的情况是可能的。
有内的PeopleCode限制,这主要是由于在字符串长度的限制,但是我从来没有发现存储的SQL语句的限制。
就我个人而言,我会考虑以某种方式将声明分成几部分。
你可以:
- 使用 App Engine 的内置循环机制
- 混合使用 SQL 和 PeopleCode
- 使用临时表并执行中间SQL,存储在临时表中
除了让你的数据库心脏病发作之外,更不用说当 DBA 在 SQL 监视器中看到该语句时提及。如果您必须再次查看该声明,您就会为自己节省一个痛苦的世界。
我认为 App Engine 中的 SQL 是以长整型存储的,因此在 Oracle 下它会是 4GB,在 DB2 下也同样巨大。
不隶属于 StackOverflow