Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么SQL Server找不到新创建的函数?_Sql Server_Tsql_Function - Fatal编程技术网

Sql server 为什么SQL Server找不到新创建的函数?

Sql server 为什么SQL Server找不到新创建的函数?,sql-server,tsql,function,Sql Server,Tsql,Function,我想知道为什么最近我创建了函数,但SQL Server在调用它们时返回错误,因为它们被添加到数据库的函数列表中 例如,对于以下函数,我得到这样一个错误: declare @cats nvarchar(1000) set @cats = 'a|b|c|d|e' SELECT dbo.fncSplit(@Cats, '|') 错误: 找不到列“dbo”或用户定义函数或聚合“dbo.fncSplit”,或者名称不明确 示例函数: CREATE FUNCTION [dbo].fncSplit (

我想知道为什么最近我创建了函数,但SQL Server在调用它们时返回错误,因为它们被添加到数据库的函数列表中

例如,对于以下函数,我得到这样一个错误:

declare @cats nvarchar(1000)
set @cats = 'a|b|c|d|e'

SELECT dbo.fncSplit(@Cats, '|')
错误:

找不到列“dbo”或用户定义函数或聚合“dbo.fncSplit”,或者名称不明确

示例函数:

CREATE FUNCTION [dbo].fncSplit
(    
    @RowData NVARCHAR(MAX),
    @Delimeter NVARCHAR(MAX)
)
RETURNS @RtnValue TABLE 
(
    ID INT IDENTITY(1,1),
    Data NVARCHAR(MAX)
) 
AS
BEGIN 
    DECLARE @Iterator INT
    SET @Iterator = 1

    DECLARE @FoundIndex INT
    SET @FoundIndex = CHARINDEX(@Delimeter,@RowData)

    WHILE (@FoundIndex>0)
    BEGIN
        INSERT INTO @RtnValue (data)
        SELECT 
            Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1, @FoundIndex - 1)))

        SET @RowData = SUBSTRING(@RowData,
                @FoundIndex + DATALENGTH(@Delimeter) / 2,
                LEN(@RowData))

        SET @Iterator = @Iterator + 1
        SET @FoundIndex = CHARINDEX(@Delimeter, @RowData)
    END

    INSERT INTO @RtnValue (Data)
    SELECT Data = LTRIM(RTRIM(@RowData))

    RETURN
END

任何建议或解决方案都将不胜感激。

这是表值函数。语法是

declare @cats nvarchar(1000)
set @cats = 'a|b|c|d|e'

SELECT * from dbo.fncSplit(@Cats, '|')

您正在调用的函数(
dbo.Splitfn
)与示例中的函数名(
dbo.fncSplit
)不同。这是一个打字错误,还是可能是你错误的根源?@Ed Harper,是的,这是一个打字错误。我用不同的名称和内容创建了另一个,但得到了相同的错误。