Существует ли ограничение на размер текста SQL в шаге/действии SQL PeopleSoft App Engine?
-
20-09-2019 - |
Вопрос
Я получаю следующую ошибку:AeSymResolveStatement [775] ...Ошибка Meta-SQL в позиции 34338 или около нее в операторе (108512).Длина самого оператора SQL превышает 40 000 символов, отсюда и вопрос.
БД - оракул.Запускаю на Инструментах 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
Хотя pside работает довольно медленно, он отлично сохраняет и проверяет.
Другие советы
Я знаю, что существует ограничение на размер SQL, используемого в Application Engine (шаг SQL).Однажды я получил подобную ошибку при попытке использовать исключительно длинный SQL в Application Engine.
Я не удивлюсь, если такое же ограничение применимо и к объектам SQL.
Чтобы решить проблему, мне удалось разделить SQL на 2 (это был оператор обновления).Надеюсь, это возможно и в вашем случае.
В PeopleCode существуют ограничения, в основном из-за ограничений на длину строки, однако я никогда не находил ограничений на хранимые операторы SQL.
Лично я бы хотел каким-то образом разбить утверждение на части.
Вы могли бы:
- Использование встроенного механизма циклов App Engines.
- Используйте смесь SQL и PeopleCode.
- Используйте временную таблицу и выполняйте промежуточные SQL-запросы, сохраняя во временной таблице.
Не говоря уже о том, чтобы вызвать у вашей базы данных приступ сердечного приступа, не упоминайте администратора базы данных, когда он увидит оператор в мониторе SQL.Вы избавите себя от множества страданий, если вам когда-нибудь придется снова взглянуть на это утверждение.
Я думаю, что SQL-запросы в App Engine хранятся в виде длинных значений, поэтому в Oracle это будет 4 ГБ, а в DB2 — такой же огромный размер.