1

重複
の可能性: 列「dbo」またはユーザー定義関数または集計「dbo.Splitfn」が見つからないか、名前があいまいです

-- 区切り文字に基づいて配列を解析する関数

CREATE FUNCTION valuedfunction
(
    @string VARCHAR(MAX),
    @delimiter CHAR(1)
)
RETURNS @output TABLE(
    data VARCHAR(256)
)
BEGIN

    DECLARE @start INT, @end INT
    SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)

    WHILE @start < LEN(@string) + 1 BEGIN
        IF @end = 0 
            SET @end = LEN(@string) + 1

        INSERT INTO @output (data) 
        VALUES(SUBSTRING(@string, @start, @end - @start))
        SET @start = @end + 1
        SET @end = CHARINDEX(@delimiter, @string, @start)
    END

    RETURN

END

-- 従業員 ID のカンマ区切り値リストをサポートするストアド プロシージャ。関数 ---(valuedfunction) を使用して従業員データを取得します。

CREATE PROCEDURE commaseparated  
@keyList varchar(40) 
AS 
SELECT Title, Birthdate 
FROM HumanResources.Employee WITH (NOLOCK) 
WHERE EmployeeID IN (dbo.valuedfunction(@keyList))  

-- これが問題です。次のエラーが表示されます。What am I missing
exec commaseparated '10,11,12,13';

--エラー メッセージ: メッセージ 4121、レベル 16、状態 1、プロシージャのカンマ区切り、行 4 列 "dbo"、ユーザー定義関数または集計 "dbo.valuedfunction" が見つからないか、名前があいまいです。

4

1 に答える 1

1

書く

WHERE EmployeeID IN (select data  from dbo.valuedfunction(@keyList)) 
于 2012-10-08T19:33:12.620 に答える