Вызов табличных функций SQL из .NET

Скалярные функции могут быть вызваны из .NET следующим образом:

SqlCommand cmd = new SqlCommand("testFunction", sqlConn); //testFunction is scalar
cmd.CommandType = CommandType.StoredProcedure;  
cmd.Parameters.Add("retVal", SqlDbType.Int);
cmd.Parameters["retVal"].Direction = ParameterDirection.ReturnValue;
cmd.ExecuteScalar();
int aFunctionResult = (int)cmd.Parameters["retVal"].Value;

Я также знаю, что табличные функции можно вызывать аналогичным образом, например:

String query = "select * from testFunction(param1,...)"; //testFunction is table-valued
SqlCommand cmd = new SqlCommand(query, sqlConn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(tbl);

Мой вопрос заключается в том, могут ли табличные функции вызываться как хранимые процедуры, как могут скалярные функции? (например, скопировать мой первый фрагмент кода с вызываемой табличной функцией и получить возвращенную таблицу через параметр ReturnValue).

12.08.2008 15:50:49
@ChuckConway Зачем удалять C # из названия? Это было действительно, учитывая тег C # ... но этот тег не помогает, чтобы показать в Google.
Doug_Ivison 13.01.2014 23:58:22
1 ОТВЕТ
РЕШЕНИЕ

Нет, потому что вам нужно выбрать их. Однако вы можете создать хранимую упаковку процедур, которая может лишить вас смысла иметь табличную функцию.

19
7.09.2012 22:56:09
Я не думаю, что это действительно победило бы смысл наличия табличной функции. Один из аспектов наличия TVF заключается в том, что они имеют определенные гарантии безопасности, которых нет в хранимых процедурах. Другой момент заключается в том, что их можно использовать повторно, тогда как хранимую процедуру намного сложнее использовать без простого копирования и вставки.
user420667 2.08.2016 16:45:32