No se puede encontrar la columna “dbo” o la función definida por el usuario o agregar “dbo.Splitfn”, o el nombre es ambiguo

Hai chicos,

He utilizado la siguiente función dividida

CREATE FUNCTION dbo.Splitfn(@String varchar(8000), @Delimiter char(1)) returns @temptable TABLE (items varchar(8000)) as begin declare @idx int declare @slice varchar(8000) select @idx = 1 if len(@String)0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return end 

y utilicé esta función en una consulta y se ejecutó

 ALTER PROCEDURE [dbo].[Employees_Delete] -- Add the parameters for the stored procedure here @Id varchar(50) AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here if exists( select Emp_Id from Employee where Emp_Id=dbo.Splitfn(@Id,',')) begin update Employee set Is_Deleted=1 where Emp_Id=dbo.Splitfn(@Id,',') select 'deleted' as message end END 

pero cuando ejecuto mi procedimiento de almacenamiento dando valores digamos (1,2) obtuve el error

 Cannot find either column "dbo" or the user-defined function or aggregate "dbo.Splitfn", or the name is ambiguous. 

He comprobado mis funciones de la tabla de valores. La función ‘splitfn’ estaba allí, pero no sé qué está pasando mal. Alguna sugerencia..

Es una función con valores de tabla, pero la está usando como función escalar.

Tratar:

 where Emp_Id IN (SELECT i.items FROM dbo.Splitfn(@Id,',') AS i) 

Pero … también considere cambiar su función en una TVF en línea, ya que tendrá un mejor rendimiento.

Debes tratar una tabla con valores de udf como una tabla, por ejemplo, ÚNALO

 select Emp_Id from Employee E JOIN dbo.Splitfn(@Id,',') CSV ON E.Emp_Id = CSV.items 

Una respuesta general

 select * from [dbo].[SplitString]('1,2',',') -- Will work 

pero

 select [dbo].[SplitString]('1,2',',') -- will not work and throws this error 

Dado que las personas vendrán de Google, asegúrese de estar en la base de datos correcta.

Ejecutar SQL en la base de datos ‘maestra’ a menudo devolverá este error.