Bonjour,

J'ai une requête SQL Sybase dynamique générée par un programme en Java:

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
26
27
 SELECT
     T1.M_INDEX,
     T1.M_ACHAT,
     T1.M_VENTE,
     T2.M_LABEL_X,
     T2.M_LABEL_Y
FROM
     TABLE_X T1, TABLE_Y T2
WHERE
     T1.M_INDEX = T2.M_INDEX
      AND T1.M_INDEX IN
      (
           SELECT T3.M_INDEX
           FROM
                TABLE_Y T3
           WHERE
                T3.M_DATE = ?
                AND T3.M_NOM = ?
                AND T3.M_LABEL_X IN
                ( ?, ?, ?, ? )                                  ---- nombre d'éléments
                                                                  ---- variables chaque
                                                                  ---- appel
                AND T3.M_LABEL_Y IN
                ( ?, ?, ?, ? )                                  ---- la même liste 
                                                                  ---- d'éléments
      )
ORDER BY T1.M_INDEX
Je souhaite transformer en procédure stockée comme ceci:

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
26
27
28
29
30
31
32
33
34
 CREATE PROCEDURE
 
PRC_LIST(  @Nom                     varchar(20),
                @Date                    datetime,
                @ListParametres       varchar(1000)
             )
 
AS
BEGIN
SELECT
     T1.M_INDEX,
     T1.M_ACHAT,
     T1.M_VENTE,
     T2.M_LABEL_X,
     T2.M_LABEL_Y
FROM
     TABLE_X T1, TABLE_Y T2
WHERE
     T1.M_INDEX = T2.M_INDEX
      AND T1.M_INDEX IN
      (
           SELECT T3.M_INDEX
           FROM
                TABLE_Y T3
           WHERE
                T3.M_DATE = @Date
                AND T3.M_NOM = @Nom
                AND T3.M_LABEL_X IN
                ( @ListParametres )
                AND T3.M_LABEL_Y IN
                ( @ListParametres )
      )
ORDER BY T1.M_INDEX
END
Pourriez-vous me dire comment faire pour que je puisse appeler cette procedure comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 PRC_LIST ( "DEVISES", "2007-07-07", " 'USD', 'EUR', 'GBP', 'JPY' ")
PRC_LIST ( "DEVISES", "2007-07-07", " 'EUR', 'GBP', 'AUD' ")
Merci.





Exemple un appel généré:
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
 SELECT
     T1.M_INDEX,
     T1.M_ACHAT,
     T1.M_VENTE,
     T2.M_LABEL_X,
     T2.M_LABEL_Y
FROM
     TABLE_X T1, TABLE_Y T2
WHERE
     T1.M_INDEX = T2.M_INDEX
      AND T1.M_INDEX IN
      (
           SELECT T3.M_INDEX
           FROM
                TABLE_Y T3
           WHERE
                T3.M_DATE = "2007-07-07"
                AND T3.M_NOM = "DEVISE"
                AND T3.M_LABEL_X IN
                ( "USD", "EUR", "GBP", "CAD" )
                AND T3.M_LABEL_Y IN
                ( "USD", "EUR", "GBP", "CAD" )
      )
ORDER BY T1.M_INDEX