随笔 - 53  文章 - 0  评论 - 955  0

上一节讲述的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  方法添加输出参数
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的其他简单辅助方法。
posted on 2010-01-25 17:01  steven hu  阅读(...)  评论(... 编辑 收藏