2012-10-08 1 views
0

가능한 중복 : 어떤 구분에 따라 배열을 구문 분석
Cannot find either column “dbo” or the user-defined function or aggregate “dbo.Splitfn”, or the name is ambiguous구문 분석에 대한 테이블 반환 함수에 배열을 전달

--function

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)) 

--This

문제이다 : 나는 아래 점점 오류입니다 : 무엇 내가
간부가 '10, 11,12,13 'commaseparated 실종;

--error 메시지 : 메시지 4121, 수준 16, 상태 1, 프로 시저 commaseparated, 4 호선 열 "DBO"또는 사용자 정의 함수 또는 집계 "dbo.valuedfunction", 또는 이름 중 하나를 찾을 수 없습니다입니다 모호한.

답변

1

쓰기

WHERE EmployeeID IN (select data from dbo.valuedfunction(@keyList)) 
관련 문제