Toevoegen van een order

Nu de eerste stapjes in PL/pgSQL zijn gemaakt leek het me zinvol om een nieuwe stored procedure te maken voor het aanmaken van een order. Het toevoegen bestaat uit 2 verschillende delen:

- Het invoeren van de gegevens in de order-kop-tabel
- Het toevoegen van de producten aan een order

Bij het toevoegen van producten aan een order worden ook de beschrijving + prijs opgeslagen in de tabel tbl_order_line. Op die manier blijft correcte informatie bewaard als een product wordt verwijderd of de prijs / omschrijving wijzigt.

Dit betekent dus dat er 2 SP’s worden gemaakt.

Creëren van een order:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE FUNCTION api.sp_add_order(numeric) RETURNS BOOL AS
$$
DECLARE
    p_userid ALIAS FOR $1; -- Parameter UserID
BEGIN
    -- Voer de INSERT uit op de order-kop tabel
    INSERT INTO base.tbl_order_head(user_id,orderdate) VALUES(p_userid, NOW());
    RETURN TRUE;

    EXCEPTION
        WHEN FOREIGN_KEY_VIOLATION THEN
            RAISE EXCEPTION 'Het gegeven UserID bestaat niet';
            RETURN FALSE;
        WHEN OTHERS THEN
            RAISE EXCEPTION 'Er is een fout opgetreden';
            RETURN FALSE;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;


Toevoegen van producten aan een order:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE OR REPLACE FUNCTION "api"."sp_add_product_to_order" (numeric, numeric, numeric) RETURNS boolean AS
$$
DECLARE
    p_orderid ALIAS FOR $1;     -- Parameter OrderID
    p_productid ALIAS FOR $2;     -- Parameter ProductID
    p_aantal ALIAS FOR $3;     -- Parameter aantal
    rec RECORD; -- Variabele om resultaten in te fetchen
BEGIN
    -- Haal de gegevens van het product op en sla deze op in de variabele rec
    FOR rec IN SELECT * FROM base.tbl_product WHERE id=p_productid LOOP

    -- Hier worden de gegevens uit rec ingevoerd in tbl_order_line        
    INSERT INTO base.tbl_order_line
    (
        order_id,
        product_title,
        product_price,
        number_items
    )
    VALUES
    (
        p_orderid,
        rec.title,     
        rec.price,
        p_aantal
    );
    END LOOP;
    RETURN TRUE;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Voorbeeldcase
  3. Schema’s
  4. SQL Code en relaties
  5. Stored Procedures en het gebruik hiervan in je app
  6. Toevoegen van een order
  7. Voorbeeld van het gebruik in PHP
  8. Afsluiting

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.