วันนี้เพื่อนถามฉันว่าจะรับค่าส่งคืนของกระบวนการที่เก็บไว้ใน Data Access Application Block ได้อย่างไร ฉันพบว่าปัญหานี้ไม่ได้กล่าวถึงในบทความที่ฉันเขียนก่อนหน้านี้ ดังต่อไปนี้:
1. ขั้นแรกให้สร้าง Stored Procedure ด้วยค่าที่ส่งคืน ดังตัวอย่าง ฉันจะสร้าง Stored Procedure ดังต่อไปนี้:
สร้างการทดสอบ proc
-
@ไอดีอินท
-
ตามที่
ประกาศ @flag int
เลือก * จากบุคคลที่ id=@id
ถ้า @@rowcount > 0
ตั้ง @flag=1
อื่น
ตั้ง @flag=0
กลับ @flag
วิธีการที่เราใช้เพื่อให้ได้ค่าที่ส่งคืนนี้ในโปรแกรมมีดังนี้:
[TestMethod]
โมฆะสาธารณะ TestReturnValue ()
-
ฐานข้อมูล 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(ค่าทดสอบ, 1);
-
จากโค้ดข้างต้นเราสามารถรับค่าส่งคืนของกระบวนงานที่เก็บไว้ในโปรแกรมได้
อาจมีหลายๆ อย่างที่ผมยังไม่ได้กล่าวถึงในบทความที่ผมเขียนไว้ก่อนหน้านี้ หวังว่าเพื่อนๆ จะสามารถแสดงความคิดเห็นได้มากกว่านี้นะครับ