0

테이블을 반환하는 SQL Server 함수가 있습니다. 테이블의 구조는 ID INTEGER, SortOrder INTEGER입니다. ID를 나타내는 두 쌍의 수를 분리SQL Server의 함수에서 반환 된 테이블 사용

ALTER FUNCTION dbo.ParseStringByPipe(@InputList VARCHAR(8000) 
RETURNS @SortedList TABLE (ID INTEGER, SortOrder INTEGER)) 

내가 @InputList VARCHAR (8000)이 입력 파라미터의 값이 쉼표의리스트 될 저장된 프로 시저 파라미터 취하는 저장된 프로 시저 dbo.AdjustSortOrder있을 그 id의 새로운 정렬 순서. 전의. 1,2,3,4 (id 1 정렬 순서 2, id 3 정렬 순서 4)

저장 프로 시저 내에서이 함수를 호출하고 있습니다. 그 함수에서 반환 값을 가져 와서 함수에서 반환 한 값을 기반으로 테이블을 업데이트하려고합니다. 과 같이 표시됩니다 반환 날짜 : 나는 SORTORDER 필드를 설정 dbo.Orders라는 테이블을 갱신하고

ID     SortOrder 
------------------------------- 
1      5 
2      2 
3      7 

는 = 정렬 순서 어디 ID = 반환 테이블의 ID입니다. 내가 잘못하지만 내부에 갱신 될이 작업을 수행하는 가장 좋은 방법을 생각에 가입하는 경우 제발 올바른 예

UPDATE 
    dbo.Orders 
SET 
    Orders.SortOrder = rt.SortOrder 
FROM 
    dbo.Orders ot 
INNER JOIN 
    SortedList sl 
ON 
    ot.ID = sl.ID 

내가 가진 첫 번째 질문 난의 내부 함수에서 반환 값을 사용합니까 어떻게 저장 프로 시저의 두 번째 질문은 내부 조인이 작업을 수행하는 가장 효율적인 방법일까요? 모든 도움을 미리 감사드립니다.

답변

1

문자 그대로 함수에 들어가서 테이블처럼 취급하십시오. 일반적으로 "dbo"접두사가 필요합니다.

INNER JOIN dbo.SortedList(@InputList) sl ON ot.ID = sl.ID

+0

감사합니다. 제 생각에 그것을 복잡하게 해석했습니다. – SSISPissesMeOff

관련 문제