2
我不知道爲什麼最近我創建函數,但SQL Server在調用它們時返回錯誤,以防它們被添加到數據庫的函數列表中。爲什麼SQL Server無法找到新創建的函數?
例如以下函數I得到這樣一個錯誤:
declare @cats nvarchar(1000)
set @cats = 'a|b|c|d|e'
SELECT dbo.fncSplit(@Cats, '|')
錯誤:
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.fncSplit", or the name is ambiguous.
示例函數:
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
任何建議或溶液將高度讚賞。
您調用的函數('dbo.Splitfn')與您示例中的函數名稱('dbo.fncSplit')不同。這是一個錯字,還是它可能是錯誤的根源? – 2013-04-09 09:15:34
@ Ed Harper,是的,這是一個錯字。我創建了另一個不同的名稱和內容,但得到了相同的錯誤。 – Kardo 2013-04-09 09:20:43