Entity Framework を使用しています。Customer というエンティティ オブジェクトを作成し、ストアド プロシージャを追加しました。
私のストアド プロシージャには、出力パラメータで文字列を返す別の 2 つのストアド プロシージャが含まれています。そして、両方のストアド プロシージャの出力パラメータ値をメイン ストアド プロシージャに連結します。
メイン ストアド プロシージャは、結果の文字列を出力パラメーターにも返します。
また、連結された文字列を返すメイン ストアド プロシージャの関数インポートも作成しました。
アプリケーションを実行すると、「ストア データ プロバイダーから返されたデータ リーダーには、要求されたクエリに対して十分な列がありません」というメッセージが表示されます。
1 番目と 2 番目の手順に select ステートメントがありません。メイン ストアド プロシージャの出力パラメータ値を返す方法を教えてください。
詳細については、以下をご覧ください。
Create Procedure MainProcedure
@Id int,
@MainResult nvarchar(max) output
AS
Begin
declare @firstResult nvarchar(max)
declare @secondResult nVarchar(max)
declare @MainResult nVarchar(max)
Exec FirstSP @Id,@firstResult Output
Exec SecondSP @Id,@secondResult Output
Set @MainResult=@firstResult+@secondResult
End
エンティティコードは次のようになります
System.Data.Objects.ObjectResult<string> resultList = null;
var OutputParamter =new ObjectParameter("MainResult",typeof(string));
resultList = ent.MainProcedure(ID, OutputParamter);