2011-10-25 49 views
3

我有以下TSQL功能:使用c#,我如何執行tsql用戶函數並獲取其返回值?

ALTER FUNCTION [dbo].[fn_MyFunc] (
     @AccountId varchar(50) 
) 
returns bit 
as 
begin 

    declare @IsEligible bit 
     --some calculation 
    return @IsEligible 


end 

使用C#,是該方法來調用這個TSQL功能並獲取其返回值?

 Database database = DatabaseFactory.CreateDatabase("DB"); 
    using (DbCommand dbCommand = database.GetStoredProcCommand("fn_MyFunc")) 
        { 
         database.AddInParameter(dbCommand, "@AccountId", DbType.String, "1234"); 
bool returnedVAlue = (bool)dbCommand.ExecuteScalar(); 
} 
+0

當然,你可以測試這是否是調用函數的方式?當你運行代碼時會發生什麼 - 如果你得到了正確的結果,那麼,如果你得到一個異常,那麼它不是...... – Chris

回答

4

因爲你在呼喚你將有一個函數中使用內聯SQL,而不是存儲過程調用的方式。因此,而不是調用一個存儲過程,您可以撥打電話

select dbo.fn_myFunc(?) as result 

您也可以創建一個存儲過程,該存儲過程僅包含對該函數的調用。

+0

我的不好,認爲它很簡單,它不需要它 - 但它確實看起來更好,但它! –

+0

無法獲得正確的語法。 –

+0

您可能會發現創建一個只調用該函數的存儲過程更容易。 –

0

那是,如果你正在使用企業庫數據訪問應用程序塊

+0

他正在調用一個函數而不是存儲過程。該代碼不應該工作。 –

相關問題