Bonjour à tous,

Dans un script je dois construire une requête à partir de la lecture d'un fichier CSV. (pas important pour le problème).

Au final, j'obtiens une requête toute simple du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT COUNT(*) FROM ma_table
WHERE (champ1, champ2) IN ( ('val1_1','val1_2') , ('val2_1','val2_2') , ('val3_1','val3_2')  );
Et je veux maintenant récupérer la valeur du COUNT(*).

Je passe donc par du SQL dynamique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
DECLARE
    v_req_vet   VARCHAR2(1024);
    v_result    VARCHAR2(5);
BEGIN
    v_req_vet := 'SELECT COUNT(*) FROM ma_table WHERE (champ1, champ2) IN ( ('val1_1','val1_2') , ('val2_1','val2_2') , ('val3_1','val3_2')  ) INTO :1';
 
 
    EXECUTE IMMEDIATE v_req_vet INTO v_result;
 
 
    DBMS_OUTPUT.PUT_LINE('Resultat : ' || v_result);
END;

Et donc bien sûr ça ne marche pas.
Je suis même embêté par les quotes qui entourent les valeurs. ça marche en doublant les quotes ?

Si vous avez une solution, ce serait super.

Merci


Michel