问: 我有一个存储过程,其返回值由 MAX() 进行计算。 在将该存储过程拖动到 O/R 设计器图面时,返回值不正确。
答: LINQ to SQL 提供了两种方法来通过存储过程返回数据库生成的值:
-
通过命名输出结果。
-
通过显式指定输出参数。
下面是错误输出的示例。 因为 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 max(i) AS MaxResult from t where name like 'hello'
end