今天有位朋友問我如何在Data Access Application Block中得到存儲的過程的返回值,我才發現自己以前寫的文章中確實沒提到這方面的問題,現在來補充一下,具體的解決方法如下:
1.先建立一個具有回傳值的預存過程,作為範例,我就簡單的建一個預存過程,如下:
create proc test
(
@id int
)
as
declare @flag int
select * from person where id=@id
if @@rowcount > 0
set @flag=1
else
set @flag=0
return @flag
我們要在程式中取得這個回傳值的方法如下:
[TestMethod]
public void TestReturnValue()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbcomm = db.GetStoredProcCommand("test");
db.AddInParameter(dbcomm, "@id", DbType.Int32,1);
//關鍵在這裡,新增一個參數,類型為ReturnValue
db.AddParameter(dbcomm, "@RETURN_VALUE", DbType.String, ParameterDirection.ReturnValue, "", DataRowVersion.Current, null);
db.ExecuteNonQuery(dbcomm);
int testvalue = (int)dbcomm.Parameters["@RETURN_VALUE"].Value;
Assert.AreEqual(testvalue, 1);
}
透過上面的程式碼我們就能夠在程式中獲得預存過程的回傳值了。
以前寫的文章可能還有很多地方沒說到,希望有更多的朋友提意見,謝謝!