Ниже моя попытка ответить, почему это произошло. На этот ответ есть несколько уровней, и по мере их углубления они становятся более умозрительными.
Почему мой запрос перестает работать?
Не удалось выполнить запрос, поскольку WM_CONCAT
это недокументированная функция, недоступная в вашей новой базе данных.
Почему он больше не доступен?
WM_CONCAT
был использован внутренне как часть Oracle Workspace Manager (OWM). OWM является необязательным компонентом в 10g и 11g. Некоторые базы данных, возможно, были установлены без него, или администратор баз данных, возможно, удалил его позже. Этот вариант не существует для Express Edition. И эта функция вообще не существует в Oracle 12c.
Давным-давно кто-то в Интернете обнаружил эту функцию, считал ее полезной, сказал людям, и идея распространилась. Но Oracle никогда не говорил людям использовать его и никогда не гарантировал, что он ни разу не исчезнет. Этот день настал.
Но ... почему это произойдет с такой популярной особенностью ?!
Это проблема отношения с корпорацией Oracle.
Oracle не ценит функции, которые явно полезны, если они также теоретически не нужны. Они подождали двадцать лет, чтобы создать удобную, официальную функцию, чтобы делать то, что каждый разработчик баз данных в мире делает все время.
Вам никогда не приходилось использовать WM_CONCAT
. Вы могли бы использовать хаки с XMLAgg, Oracle Data Cartridge, MODEL
, CAST(COLLECT...
и т.д. Это были все ужасные решения, но они сделали работу, так почему бы вам не ленивые разработчики просто сделать ваше уникальное решение каждый раз , когда вам нужно решить общую проблему?
Такое отношение сводит меня с ума, и я вижу то же самое с простыми задачами, такими как разделение строк и типы Boolean.
Для продукта, который имеет подсказки, вы бы подумали, что разработчики Oracle лучше оценили бы идею добавления полезных функций, даже если они, возможно, не теоретически необходимы.