SELECT * разрывается при добавлении столбцов в Oracle Application Express (ApEx) 3.0 - PullRequest
1 голос
/ 28 января 2009

Когда я определяю SQL региона отчета как SELECT * FROM some_table, все в порядке, пока новые столбцы не добавляются в some_table, а затем возникает ошибка «ORAxxx No data found» Это легко исправить, так как достаточно снова применить изменения к региону, даже не внося никаких изменений. Тем не менее, это не делает для надежного приложения.

Существует ли какая-то комбинация параметров, которая позволила бы SELECT *, который не разрывается с новыми столбцами? Было бы достаточно применить любое форматирование по умолчанию или заголовок к новым столбцам.

Я знаю, что могу составить список столбцов из словаря данных, а затем объединить все в операторе SELECT для оценки, но это выглядит довольно не элегантно.

Ответы [ 2 ]

3 голосов
/ 28 января 2009

Обычно не рекомендуется использовать SELECT * запросы, потому что:

  • Возвращает все столбцы, тогда оптимизатору остается меньше играть.
  • Это делает менее надежным для приложений, потому что добавление новых столбцов изменяет результат запроса, дающий неожиданные результаты. Без SELECT * я имею в виду предоставление именно тех столбцов, которые вам нужны, добавление новых столбцов не имеет значения для приложения.

В любом случае, помните, что, создавая SELECT * для представления, оракул создает представление, заменяющее * для всех столбцов, может быть APPEX делает то же самое.

2 голосов
/ 28 января 2009

В настоящее время источник вашего региона (я полагаю) установлен на "Использовать специфичные для запроса имена столбцов и проверять запрос". Это означает, что столбец отчета определен явно для каждого столбца в запросе, и ожидается, что SQL будет статическим.

Если вы измените источник региона на «Использовать общие имена столбцов (запрос на анализ только во время выполнения)», он все равно будет работать после добавления нового столбца, при этом заголовок столбца по умолчанию будет иметь имя столбца.

Существует еще одно свойство "Максимальное количество столбцов общего отчета", которое по умолчанию равно 60 и должно иметь достаточно большое значение для размещения любых будущих столбцов, добавленных в таблицу.

...