1

LINQtoSQLで使用したいストアドプロシージャがあります。私はそれをdbmlにうまく追加して、なんとかそれを呼び出すことができましたが、それから奇妙なことが起こります。「列「MySchema」またはユーザー定義関数を見つけることができないか、「MySchema.pi_MyStoredProcedure」を集約するか、名前があいまいです。」というメッセージが表示されます。-エラー。SSMSからprocを正常に実行できるため、なぜこれが発生しているのかを理解しようとしました。SQL Profilerはなんとかクエリをキャッチし、次のようになりました。

exec sp_executesql N'SELECT CONVERT(Int,[MySchema].[pi_MyStoredProcedure](@p0)) AS   [value]',N'@p0 nvarchar(4000)',@p0=N'ParameterValue'

これを実行しようとすると、SSMSから同じ「見つかりません...」エラーが発生します。これは、ストアドプロシージャのリターンタイプと関係があるのではないかと思います。.dbmlXMLコードで手動で設定する必要がありました。これは次のようになります。

<Function Name="MySchema.pi_MyStoredProcedure" Method="pi_MyStoredProcedure" IsComposable="true">
    <Parameter Name="MyParameter" Type="System.String" DbType="NVarChar(512)" />
    <Return Type="System.Int32" />
</Function>

私はここで何が間違っているのですか?私が見つけたすべてのオンラインチュートリアルは、これを行うように私に言っていますが、明らかに私が見逃している何かがありますか?それは何ですか?

4

1 に答える 1

1

RETURN の代わりに OUTPUT パラメータを使用するようにストアド プロシージャを変更することで、これを修正することができました。

于 2012-09-04T05:17:38.337 に答える