Here is my function:
-- DECLARE @cur CURSOR
DECLARE @line int
declare @return varchar(255)
DECLARE myCursor CURSOR FOR
SELECT DISTINCT (quote_ln_no) as quote_ln_no
  FROM dbo.quote_line_bom
 WHERE quote_no = @quote_no AND component_mat_no = @mat_no
ORDER BY quote_ln_no
set @return = ''
OPEN myCursor
FETCH NEXT FROM myCursor
INTO @line
WHILE @@FETCH_STATUS = 0
BEGIN
  set @return = @return + convert(varchar, @line) + ', '
  FETCH NEXT FROM myCursor 
  INTO @line
END
CLOSE myCursor
DEALLOCATE myCursor 
if len(@return) > 0 
set @return = substring(@return, 1, len(@return)-1)
return @return
When I use this function in a query which returns over 3000 records, function adds 20 seconds.
Please let me know what is wrong with it or is there a way to make it run faster?
 
     
     
    