title: Cannot find either column “dbo” or the user-defined function or aggregate “dbo.FN_Split”, or the name is ambiguous
body: <p>I have following function which accepts the CSV &amp; delimeter &amp; splits it </p>
  
  <pre><code>ALTER FUNCTION [dbo].[FN_Split] (@String varchar(max), @Delimiter char(1))      
  returns @temptable TABLE (orderId int,items varchar(max))        
  as        
  begin        
     declare @idx int   
     declare @i int=0     
     declare @slice varchar(8000)        
     declare @orderId int = 0 --&lt;added a counter
  
      select @idx = 1        
          if len(@String)&lt;1 or @String is null  return        
  
     while @idx!= 0        
     begin        
         set @idx = charindex(@Delimiter,@String)        
         if @idx!=0        
             set @slice = left(@String,@idx - 1)        
         else        
            set @slice = @String        
  
         if(len(@slice)&gt;0)   
             insert into @temptable(orderId, Items) values(@orderId, @slice)        
         set @orderId = @orderId+1 --&lt;increment the counter
  
         set @String = right(@String,len(@String) - @idx)        
         if len(@String) = 0 break        
     end    
  return        
  end
  </code></pre>
  
  <p>&amp; the stored procedure like this which uses the above function &amp; inserts the result into the database:</p>
  
  <pre><code>ALTER PROCEDURE dbo.StoredProcedure3
  (
   --@tableName nvarchar(max),
   @p_SourceText nvarchar(max),
   @p_Delimeter nvarchar(100)=','
  )
  
  AS
  BEGIN
  DECLARE @sql nvarchar(max)
  --select * from fn_ParseText2Table(@p_SourceText, @p_Delimeter)
  --insert into Person values (@sql)
  declare @i int=0
  DECLARE @max int=3
  
  while @i&lt;=@max
  begin
  if @i=0
  begin
  set @sql='insert into Person values( select items from'+dbo.FN_Split(@p_SourceText,  
   @p_Delimeter)+ 'as where orderId ='+0+')'
  end
  
   else
    begin
     if @i=(@max-1)
      begin
   set @sql=@sql+'UNION select items from'+ dbo.FN_Split(@p_SourceText,
                    @p_Delimeter)+' where orderId ='+@i+')'
      end
   else
    begin
     set @sql=@sql+'UNION select items from'+ dbo.FN_Split(@p_SourceText,        
                   @p_Delimeter)+ 'where orderId ='+@i+') UNION'
        end
     end
     set @i=@i+1
  end
  END 
  </code></pre>
  
  <p>But After Executing the Procedure I get The Following error:
  Cannot find either column "dbo" or the user-defined function or aggregate "dbo.FN_Split", or the name is ambiguous.
  No rows affected.
  (0 row(s) returned)</p>
  
  <p>Please help to get out of it...</p>