Bonjour a tous, si vous pouviez m'aider, j'ai une fonction qui me permet de déterminer la somme totale payée selon un identifiant.
D'autre part j'essaye de récupérer dans une collection tous les noms de famille des personnes dont la somme totale est inférieure à 100, j'ai donc fait ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 CREATE OR REPLACE FUNCTION money_spent (customer_id NUMBER) RETURN NUMBER IS somme NUMBER; BEGIN SELECT SUM(PRICE) INTO somme FROM T_RESERVATION WHERE buyer_id = customer_id; RETURN somme; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('Error : The customer does not exist'); RETURN NULL; END;
Le fait de balancer ma fonction comme ca tel quel dans le where pose pb, mais je vois pas du tout comment faire. Merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 SET SERVEROUTPUT ON DECLARE TYPE customer_tab IS TABLE OF t_customer.last_name%TYPE INDEX BY PLS_INTEGER; tab_cus customer_tab; loop_count NUMBER (3) := 81; test NUMBER (4) :=0; BEGIN FOR i IN 1..loop_count LOOP test := test + 1; SELECT last_name INTO tab_cus(i) FROM T_CUSTOMER WHERE customer_id = test or money_spent(test) < 100; END LOOP; FOR i IN 1..loop_count LOOP DBMS_OUTPUT.PUT_LINE(tab_cus(i)); END LOOP; END;
Partager