Bonjour,
J'ai une requête SQL Sybase dynamique générée par un programme en Java:
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 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
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
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
Merci.
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' ")
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
Partager