2011-08-12 6 views
2

ちょっと私は、別のストアドプロシージャから結果セットを渡す必要があるストアドプロシージャをUDFに渡します。この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型は、何百万もの結果を渡す必要があることを見ている質問から外れていると思います。これを再考する必要があるようです。 :(ありがとう! –

関連する問題