Hvis det er nul, betyder det, at der ikke er mangel; det er checkshortage lagrede procedure har ikke opdaget nogen mangel. I dette tilfælde den lagrede procedure, callInsertUpdate kalder en anden lagret procedure til at indsætte en række i tabellen SALG og de tre rækker i SaleDetails table.The insertUpdate Procedure En salg betyder, at én række skal indsættes i Sales bord og tilsvarende rækker til produkterne indsat i SaleDetails tabellen. Det SaleID for den række, der går ind i Sales tabellen er givet automatisk af DBMS.
Den MedarbejderId og CustomerID skal gives af dig (eller nogle kode, som du har skrevet). Den DateAndTime (tidsstempel) værdien af salget rækken er også givet automatisk af DBMS. For SaleDetails bord, du er nødt til at skrive i Mængde og SoldPrice. Den insertUpdate lagrede procedure vil bestemme SaleID og ProductID. Den SaleID netop indsat i Sales tabellen, er den maksimale (heltal) nummer i SaleID kolonnen, alt andet lige.
Det er den kode for insertUpdate procedure #procedure at indsætte i SaleDetails og opdatere Produkter Afgrænser //CREATE PROCEDURE insertUpdate (IN numberOfRows heltal) BEGIN # loop tæller variabel DECLARE jeg Heltal DEFAULT 1; #productID variabel fra SaleDetailsTemp bord ERKLÆRER PIDVar INTEGER; #sold pris variabel for SaleDetails tabellen ERKLÆRER SoldPriceVar DECIMAL (19,2); #variable til ønskede mængder DECLARE QtyRequestVar INTEGER; #variable for SaleID fra Salg tabel ERKLÆRER SaleIDVar INTEGER; #variable til mængde, der ville forblive ERKLÆRER QtyRemainVar INTEGER; #variable for disponible mængde i produkter tabellen ERKLÆRER QtyAvailVar INTEGER; SELECT MAX (SaleID) fra salg TIL SaleIDVar; Mens jeg SELECT QtyRequest, ProductID, QtyAvail, QtyRemain, SoldPrice FRA SaleDetailsTemp WHERE ID = i INTO QtyRequestVar, PIDVar, QtyAvailVar, QtyRemainVar, SoldPriceVar; INSERT INTO SaleDetails (SaleID, ProductID, mængde, SoldPrice) VALUES (SaleIDVar, PIDVar, QtyRequestVar, SoldPriceVar); SET QtyRemainVar = QtyAvailVar - QtyRequestVar; UPDATE