0
私は同時に2つのテーブルにデータを追加しますが、mySQLを使用するプロシージャを作成しようとしていますが、データベースのif/elseステートメントを使用する経験はあまりありません。私はuがその使用のストアの後にすべてのテーブルを追加するためのビューテーブルを使用する必要があると思うデータベースにプロシージャを追加する
DELIMITER $$
Create Procedure addOrder(IN cust_id int, IN camera_id int, IN len_id int,
IN emp_id int, IN c_quantity int,IN l_quantity int,
IN status char(30), IN p_Status char(30), IN hire_date date, IN return_date
date)
begin
Declare order_id int;
Declare hireTime int;
Declare totalC int;
Declare totalL int;
Declare totalP int;
Select order_id = max(orderID) from orders;
if orderID is null then set order_id = 1;
Set hireTime = DATEDILL(hire_date, return_date);
if hire_date == return_date then set hireTime = 1;
if p_Status = "Lost" then set
select totalC = hireTime*c_quantity*hPrice + pPrice from Camera as C
inner join orderDetail as OD on C.camID = OD.camera_id inner join Orders
as O on O.orderID = OD.order_id;
select totalL = hireTime*l_quantity*hPrice + pPrice from Lens as L
inner join orderDetail as OD on L.lenID = OD.len_id inner join Orders as
O on O.orderID = OD.order_id;
Set totalP = totalL + totalC;
else set
select totalC = hireTime*c_quantity*hPrice + pPrice from Camera as C
inner join orderDetail as OD on C.camID = OD.camera_id inner join Orders
as O on O.orderID = OD.order_id;
select totalL = hireTime*l_quantity*hPrice + pPrice from Lens as L
inner join orderDetail as OD on L.lenID = OD.len_id inner join Orders as
O on O.orderID = OD.order_id;
Set totalP = totalL + totalC;
end if;
insert into Orders(custID, empID, hireDate, returnDate)
values (cust_id, emp_id,hire_date, return_date);
insert into orderDetail(orderID, cameraID, lenID, totalPrice, camQuantity,
lenQuantity, status, pStatus) values (order_id,camera_id, len_id, totalP,
c_quantity, l_quantity, status, p_Status);
end $$
DELIMITER
注文の詳細行ごとにこれを呼び出す予定ですか? –
ここにいくつかの明白な問題があります。datedill関数はありません。おそらくdatediffを意味します。ヌルセーフの等価は<=>ではありません。==、if then thenの後のset文は何も設定しませんなぜこの表から何も使用されていないときにselectステートメントで注文を参照しているのですが、注文明細ごとにこれを呼び出していると、毎回注文に挿入したくないと思われます。質問のサンプルデータを期待した結果のテキストまたはsqlfiddleに公開することができれば役に立ちます。 –