2011-08-12 2 views
2

안녕하세요 여러분, 다른 저장 프로 시저의 결과 집합을 UDF로 전달해야하는 저장 프로 시저가 있습니다.이 저장 프로 시저는 차례로 CLR SqlFunction을 호출합니다. 어떻게해야하는지 알 수없는 것은 CLR SqlFunction에 결과 집합을 전달하는 방법입니다. 테이블 SqlType을 볼 수 없으며 온라인에서 예제를 찾을 수 있습니까? 아마도 잘못 검색하고있을 수 있습니까? 또한 전달 된 마지막 매개 변수를 보면 문제가 발생합니다. 결과 집합을 전달하는 방법을 모릅니다. 감사!CLR SqlFunction에 대한 쿼리 결과 전달

<SqlFunction(DataAccess:=DataAccessKind.Read, SystemDataAccess:=SystemDataAccessKind.Read)> _ 
Public Function GetMatchedConstituents(ByVal ID As SqlGuid, ByVal CustomID As SqlString, 
             ByVal KeyName As SqlString, ByVal FirstName As SqlString, 
             ByVal MiddleName As SqlString, ByVal AddressBlock_Home As SqlString, 
             ByVal AddressBlock_Business As SqlString, ByVal PostCode_Home As SqlString, 
             ByVal PostCode_Business As SqlString, ByVal Phone_Home As SqlString, 
             ByVal Phone_Business As SqlString, ByVal ResultSet As [WhatType? There isnt a SqlTable like I assumed]) As IEnumerable 

    'do duplicate comparing logic here 

End Function 
+0

작동하지 않는 경우에도 지금까지 가지고있는 코드를 게시하십시오. 메소드 서명은 특히 유용합니다. 그리고 어떤 버전의 SQL Server? – Yuck

+0

SQL Server 2008 R2. –

답변

1

이 질문을 참조하십시오. 다른 관련 정보에 대한 링크가있는 Pass table as parameter to SQLCLR TV-UDF을 참조하십시오. 즉, TVP는 현재 SQL CLR에서 지원되지 않습니다.

결과 집합이 충분히 작 으면 XML 형식으로 변환하여 SQL CLR 함수 (SqlXml)에 매개 변수로 전달할 수 있습니다.

저장 프로 시저에서 임시 테이블을 공유하도록 설정할 수도 있습니다. 그것은 엉성한,하지만 유일한 옵션이 끝날 수 있습니다.

+0

Ahhh ... 글쎄, XML 형식은 수백만 가지 결과가 전달 될 것임을 보는 질문에서 빠져 나온 것 같습니다. 우리가 이것을 재고해야하는 것처럼 보입니다. :(그래도 고마워! –