gpt4 book ai didi

sql-server - 将查询结果存储到变量中并在存储过程中修改它

转载 作者:行者123 更新时间:2023-12-02 03:42:32 24 4
gpt4 key购买 nike

我有一个网站,客户可以通过购物车模型等在线订购商品。

问题是,当我知道记录订单时,需要更新不同的信息,例如订单表中的条目、库存表中的扣除、更新销售表等。我目前正在通过运行每个查询来执行此操作数据库根据要求获取其结果修改的时间,然后运行另一个查询来更新结果,因为下一个查询需要前一个查询的信息:

        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 存储过程会是一个更好的主意。但即使在尝试并找到了很多之后,我也找不到如何将查询结果存储在 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

这可以做到吗?如果是,请指导如何。

最佳答案

是的,这当然是可能的。这里有几个例子。

-- one way to do this
DECLARE @Cnt int

SELECT @Cnt = COUNT(SomeColumn)
FROM TableName
GROUP BY SomeColumn

-- another way to do the same thing
DECLARE @StreetName nvarchar(100)
SET @StreetName = (SELECT Street_Name from Streets where Street_ID = 123)

-- Assign values to several variables at once
DECLARE @val1 nvarchar(20)
DECLARE @val2 int
DECLARE @val3 datetime
DECLARE @val4 uniqueidentifier
DECLARE @val5 double

SELECT @val1 = TextColumn,
@val2 = IntColumn,
@val3 = DateColumn,
@val4 = GuidColumn,
@val5 = DoubleColumn
FROM SomeTable

关于sql-server - 将查询结果存储到变量中并在存储过程中修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17739480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com