2012-09-20 56 views
1

使用Simple.Data时,我想从存储过程的输出参数中获取结果。比方说,我有以下的SP(无视它的无用):在使用Simple.Data时使用输出参数调用sql server存储过程

CREATE PROCEDURE [dbo].[TestProc] 
    @InParam int, 
    @OutParam int OUTPUT 
AS 
BEGIN 
    SELECT @OutParam = @InParam * 10 
END 

当我与Simple.Data调用它,我用下面的代码。

var db = Database.Open(); 

int outParam; 
var result = db.TestProc(42, out outParam); 

Console.WriteLine(outParam); // <-- == 0 
Console.WriteLine(result.OutputValues["OutParam"]); // <-- == 420 

感觉就像outParam应该包含值,而不是OutputValues字典。所以我的问题是:在这种特殊情况下是否有更好的方法从OutParam中获得结果?

回答

3

不幸的是,由于Simple.Data使用的动态绑定基础结构不支持out参数,因为它们在所有CLR语言中都不受支持。

虽然我接受更好语法的建议。

+0

如果你可以调用它,而不需要发送出参数作为参数,它会看起来不错。只是db.TestProc(42); (我不知道是否有可能...) –

+1

如果更改存储过程并为输出参数提供默认值,则不需要传递它。 'CREATE PROCEDURE TestProc(@Answer INT,@Question INT = NULL OUTPUT)' 然后 'db.TestProc(42);' 将正常工作。 –

相关问题