【发布时间】:2013-07-18 08:22:36
【问题描述】:
我有一个网站,客户可以在该网站上以购物车模型等方式在线订购商品。
问题是,当我知道订单已记录时,需要更新不同的信息,例如订单表中的条目、库存表中的扣款、更新销售表等,而我目前正在通过运行每个查询来做到这一点数据库根据要求修改其结果然后运行另一个查询来更新结果的时间,因为下一个查询需要前一个查询的信息:
bool stts = false;
int re1 = 0, re2 = 0, re3 = 0;
short maxOr = 0, maxCa = 0, maxOc = 0;
SqlConnection conn= Shared.GetSqlCon(); //Make connection object
conn= Shared.GetSqlCon();
var comm1 = new Commmand("SELECT MAX(orId) FROM [order];", sqlCon);
maxOr = Shared.OSC(sqlCon, comm1);
Shared.COC(sqlCon); //Close & Dispose connections
conn= Shared.GetSqlCon();
var comm2 = new Commmand("SELECT MAX(caId) FROM [cart];", sqlCon);
maxCa = Shared.OSC(sqlCon, comm2);
Shared.COC(sqlCon);
conn= Shared.GetSqlCon();
var comm3 = new Commmand("INSERT INTO [order_cart](orId,caId) VALUES(@maxOr,@maxCa);", sqlCon);
comm3.Parameters.AddWithValue("@maxOr", maxOr + 1);
comm3.Parameters.AddWithValue("@maxCa", maxCa + 1);
当然,这无论如何都不是一次又一次地来回访问数据库的好方法,我认为通过 SQL Server Stored Procedures 进行处理会是一个更好的主意。但是即使在尝试并找到了很多之后,我也找不到一个示例来说明如何将查询结果存储在 SP 变量中并在其中使用它,有点像这样:
Declare @myVar int //Stored Procedure variable
@myVar = SELECT MAX(caId) FROM [cart] //Getting query result in the variable
INSERT INTO [order_cart](orId,caId) VALUES(@maxOr, @myVar); //Updating record through the variable
return @myVar //return variable value to the program
可以这样做吗?如果是,请指导。
【问题讨论】:
-
对发现的开始有帮助吗? stackoverflow.com/questions/7542517/…
标签: sql-server asp.net-mvc sql-server-2008 stored-procedures