上一节讲述的sql语句的执行,本节将讲述的是存储过程的执行。
执行存储过程是通过FromProc方法来完成的。
执行无参数存储过程如下:
DbSession.Default.FromProc("Ten Most Expensive Products").ToDataTable();
"Ten Most Expensive Products"就是存储过程名称。
执行带参数的存储过程:
DbSession.Default.FromProc("Sales by Year") .AddInParameter("Beginning_Date", DbType.DateTime, "1995-01-01") .AddInParameter("Ending_Date", DbType.DateTime, "1996-12-01") .ToDataTable();
数据库中该存储过程
create procedure "Sales by Year" @Beginning_Date DateTime, @Ending_Date DateTime AS SELECT Orders.ShippedDate, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy,ShippedDate) AS Year FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID WHERE Orders.ShippedDate Between @Beginning_Date And @Ending_Date GO
有两个参数,分别是Beginning_Date和Ending_Date。
存储过程和sql语句的执行类似,不过存储过程多了参数,就是会有输入输出参数。
通过
AddInputOutputParameter 方法添加输入输出参数
AddOutParameter 方法添加输出参数
AddOutParameter 方法添加输出参数
AddReturnValueParameter 方法添加返回参数
返回参数值,示例如下:
ProcSection proc = DbSession.Default.FromProc("testoutstore") .AddInParameter("in1", System.Data.DbType.Int32, 1) .AddOutParameter("out1", System.Data.DbType.Int32) .AddOutParameter("out2", System.Data.DbType.String,100); proc.ExecuteNonQuery(); Dictionary<string, object> returnValue = proc.GetReturnValues(); foreach (KeyValuePair<string, object> kv in returnValue) { Response.Write("ParameterName:" + kv.Key + " ;ReturnValue:" + Convert.ToString(kv.Value)); Response.Write("<br />"); }
其中GetReturnValues()方法就是回去返回值。
存储过程的执行也是很简单的。
下一节将讲述DbSession的其他简单辅助方法。