Иметь табличную функцию в таблице возврата T-SQL с переменным количеством столбцов - PullRequest
3 голосов
/ 11 апреля 2011

Возможно ли, чтобы табличная функция в T-SQL возвращала таблицу с переменным числом столбцов?
Имена столбцов могут быть просто 1, 2, …, n.

Прямо сейчас у меня есть функция «разбиение строки», которая возвращает таблицу с одним столбцом 1 x n, и впоследствии я поворачиваю таблицу к таблице n x 1, но я бы предпочел упростить процесс, вернув правильную таблицу формат для начала.

Я собираюсь использовать процедуру CLR в C # для этой функции, я просто не знаю, как настроить пользовательскую функцию для возврата моих данных в желаемом формате: с переменным числом столбцов, в зависимости от входная строка.

1 Ответ

1 голос
/ 12 апреля 2011

Невозможно вернуть нестатический набор результатов из табличной функции (TVF), независимо от того, записан ли он в T-SQL или .NET / SQLCLR. Только хранимые процедуры могут динамически создавать набор результатов.

В принципе, любая функция должна возвращать согласованный тип результата, будь то скалярное значение или коллекция (т. Е. Набор результатов).

Однако в хранимой процедуре SQLCLR вы можете создать динамический набор результатов с помощью SqlMetaData . Если у вас нет явной необходимости SELECT ... FROM, то, возможно, будет работать хранимая процедура.

Конечно, вы также можете обойтись без этого в T-SQL, используя динамический SQL для построения оператора SELECT на основе выходных данных вашей функции split.

Многое из этого сводится к точному контексту, в котором необходимо использовать эту функциональность.

...