2012-09-20 55 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);' 將正常工作。 –

相關問題