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.

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;
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
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;
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