Msg 252, Level 16, State 1, Procedure fnSplit, Line 10 Recursive common table expression 'csvtbl' does not contain a top-level UNION ALL operator.Here is the function as I typed it from your post
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUNCTION [dbo].[fnSplit] ( @list varchar(8000), @delim CHAR(1) = ',' ) RETURNS Table AS RETURN WITH csvtbl(START, stop) AS ( SELECT START = 1, Stop = CHARINDEX(@delim COLLATE Slovenian_BIN2, @list + @delim, stop + 1) FROM csvtbl WHERE stop > 0 ) SELECT row_number() over (order by START) AS ID, LTRIM(RTRIM(SUBSTRING(@list, START, CASE WHEN stop > 0 THEN stop - START ELSE 0 END))) AS VALUE FROM csvtbl WHERE stop > 0 GO