Q. 戻り値が MAX() によって計算されるストアド プロシージャがあります。このストアド プロシージャを O/R デザイナ サーフェイスにドラッグすると、戻り値が正しくありません。
A. LINQ to SQL には、ストアド プロシージャを介して、データベースによって生成される値を返す方法が 2 つあります。
-
出力結果に名前を付ける。
-
出力パラメータを明示的に指定する。
間違っている出力例を以下に示します。LINQ to SQL は結果をマップできないため、常に 0 が返されます。
create procedure proc2
as
begin
select max(i) from t where name like 'hello'
end
出力パラメータを使用して正しい出力をする例を次に示します。
create procedure proc2
@result int OUTPUT
as
select @result = MAX(i) from t where name like 'hello'
go
出力結果に名前を付けて正しい出力をする例を次に示します。
create procedure proc2
as
begin
select nax(i) AS MaxResult from t where name like 'hello'
end
詳細については、「ストアド プロシージャによる操作のカスタマイズ (LINQ to SQL)」を参照してください。