У меня есть несколько функций поиска (хранимых процедур), которые должны возвращать результаты с одинаковыми столбцами.
Это подход, который был принят:
Каждая хранимая процедура имела общую структуру:
CREATE TABLE #searchTmp (CustomerID uniqueIdentifier)</p>
<pre><code>INSERT INTO #searchTmp
SELECT C.CustomerID FROM /**** do actual search here, based
on stored proc arguments ****/
EXEC spSearchResults
DROP TABLE #searchTmp
В приведенном выше примере spSearchResults использует таблицу #searchTmp для выбора. spSearchResults всегда возвращал таблицу с одинаковыми столбцами и имел довольно много объединений.
Однако вместо использования временной таблицы более приемлем следующий подход:
SELECT col1, col2, col3, col4, .... etc, lots of columns ...
FROM table1 LEFT JOIN table 2 ON ... etc, lots of joins ...
WHERE ... DO ACTUAL SEARCH HERE ...
Если необходимо выполнить 10 различных поисков (например, поиск покупателя по почтовому индексу, один поиск по фамилии и т. Д.), Этот второй подход означает, что задано много дубликатов столбцов и объединений. Если код, использующий функции поиска, изменяется так, что требуется возвращать новый столбец, то есть 10 хранимых процедур, которые необходимо обновить.
Я все за первый метод, но мне просто интересно, какие преимущества дает второй метод. Спектакль?
Или есть третий способ?