Вызов табличных функций SQL из .NET - PullRequest
29 голосов
/ 12 августа 2008

Скалярные функции можно вызывать из .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).

1 Ответ

19 голосов
/ 12 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...