Невозможно вернуть нестатический набор результатов из табличной функции (TVF), независимо от того, записан ли он в T-SQL или .NET / SQLCLR. Только хранимые процедуры могут динамически создавать набор результатов.
В принципе, любая функция должна возвращать согласованный тип результата, будь то скалярное значение или коллекция (т. Е. Набор результатов).
Однако в хранимой процедуре SQLCLR вы можете создать динамический набор результатов с помощью SqlMetaData . Если у вас нет явной необходимости SELECT ... FROM
, то, возможно, будет работать хранимая процедура.
Конечно, вы также можете обойтись без этого в T-SQL, используя динамический SQL для построения оператора SELECT на основе выходных данных вашей функции split.
Многое из этого сводится к точному контексту, в котором необходимо использовать эту функциональность.