私は顧客がカートモデルなどでオンラインで注文するウェブサイトを持っています.
問題は、注文が記録されていることを知っていたときに、注文テーブルのエントリ、在庫テーブルからの控除、販売テーブルの更新など、更新する必要があるさまざまな情報があることです。現在、各クエリを 1 回ずつ実行してこれを行っています。次のクエリは前のクエリからの情報を必要とするため、データベースは要件に従って結果を変更してから、別のクエリを実行して結果を更新します。
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
これを行うことは可能ですか?はいの場合は、どのようにガイドしてください。