В настоящее время мы используем хранимые процедуры для большей части наших отчетов, но я хотел бы иметь возможность присоединиться к наборам результатов с дополнительными критериями.
Чтобы сделать это с сохраненными процессами, мне нужно сохранить набор результатов из хранимого процесса в временных таблицах, как показано ниже:
CREATE TABLE #Top_1000_Customers (
CustomerCode BIGINT,
Firstname VARCHAR(100),
Surname VARCHAR(100),
State VARCHAR(),
MonthlySpend FLOAT)
INSERT INTO #Top_1000_Customers
EXEC FindTop1000Customers()
SELECT CustomerCode, Firstname, Surname, State, MonthlySpend float
FROM #Top_1000_Customers
WHERE State = 'VIC'
DROP TABLE #Top_1000_Customers
Если я сделаю это, используя табличную функцию, этот код будет выглядеть так:
SELECT FindTop1000Customers()
WHERE State='VIC'
Если я захочу, я могу даже объединить табличную функцию с другой таблицей.
Это кажется немного более элегантным, чем использование хранимых процедур, а также выглядит так, как будто оно будет работать лучше - поскольку ему не нужно буферизовать результаты во временной таблице.
Существуют ли какие-либо существенные причины, по которым мне было бы лучше использовать хранимые процедуры для выполнения задач такого типа вместо использования табличных функций?