Я уже говорил это и скажу еще раз: Серебряной пули нет.
Использование XML в качестве входных и выходных данных для ваших хранимых процедур является решением «серебряной пули», и оно доказывает только одно: то, что одно решение, которое может быть хорошим выбором в одном случае, крайне неуместно во многих (вероятно, в подавляющем большинстве случаев). из) другие.
Рассмотрим, если хотите, хранимую процедуру, которая не принимает параметров и возвращает единственное скалярное значение. XML явно перебор в этом сценарии.
Рассмотрим также хранимую процедуру, в которой вы передаете диапазон дат (два отдельных значения даты) и возвращаете все строки из набора объединенных таблиц, попадающих в этот диапазон. Инкапсуляция дат в XML может быть не излишней, но инкапсуляция переменного количества данных, которые вы получите обратно, может быть. Вы можете вернуть ноль строк. Ты можешь вернуть тысячи из них.
Рассмотрим случай, когда тип данных, которые вы возвращаете из хранимой процедуры, зависит от типов и значений аргументов, которые вы ей передаете. Кроме того, поскольку природа наборов строк довольно изменчива, один или несколько из этих наборов строк могут измениться в будущем, что потребует изменений кодирования. Наконец, у вас есть решение, которое может быть адаптировано к XML.
Итак, должны ли вы оштрафовать всю кодовую базу, потому что небольшая их часть страдает от проблем с изменчивостью? Или вы должны разработать решение, которое заключает в себе эти изменчивые наборы данных за правильно спроектированным фасадом, который защищает остальную часть системы от этой нестабильности?
По сути, вы обнаружите, что серебряная пуля XML Everywhere - это не серебряная пуля, а ядерная боеголовка. Когда вы хотели найти решение, которое поразило бы одну цель и решило бы вашу проблему, то в итоге у вас получилось бы то, что разрушит все в поле зрения, потому что вы принесете гораздо больше огневой мощи, чтобы справиться с проблемой, чем вы могли бы разумно справиться. А затем, как это обычно бывает, оружие уничтожило тех, кто пытался его использовать.