簡體   English   中英

Linq to sql存儲過程返回值

[英]Linq to sql stored procedure return value

我在SQL Server 2005數據庫中具有以下存儲過程(僅用於返回以MB為單位的數據庫大小)。

ALTER PROCEDURE [dbo].[dbSize]
AS
BEGIN
SET NOCOUNT ON;

DECLARE @sizeMb int
DECLARE @DB_NAME varchar(100)

SELECT @DB_NAME = DB_NAME()

SELECT @sizeMb = (size*8)/1024 FROM sys.master_files
    WHERE DB_NAME(database_id) = @DB_NAME
    AND Name = @DB_NAME

RETURN @sizeMb  
END

當我在SQL Server Management Studio中運行此文件時,它可以正常工作,並以MB為單位返回當前的數據庫大小。

我希望它在應用程序中運行,因此我將其添加到了sql datacontext的linq中,生成了以下代碼:

    [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.dbSize")]
    public int dbSize()
    {
        IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
        return ((int)(result.ReturnValue));
    }

我這樣稱呼它:

int dbSize = db.dbSize();

但是,它只會返回零,而不會返回其他任何東西。 也不拋出任何異常。 我嘗試選擇一個結果並使用輸出參數,但這沒有幫助(輸出參數也為零)。 有什么建議么?

我遇到了同樣的問題。 聽起來很愚蠢,您必須返回包含存儲過程中的值的單行和單列。 L2S不執行類似於ExecuteScalar(...)

如果您使用UDF ,那么會更好。 這篇文章很好地說明了這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM