Bonjour,
Je travaille sur une application multi-plateforme (SGBD ORACLE, MS-SQL et DB2)![]()
J'ai des scripts qui tournent sur ORACLE(PL-SQL) et MS-SQL(Transact-SQL).
Par contre j'ai un problème majeur sur DB2.![]()
LES CURSEURS![]()
Je ne sais absolument pas comment les déclarer et les utiliser.
J'ai la syntaxe ORACLE ET MS-SQL, mais rien en DB2.
J'ai cherché sur le NET, ...
Bref, je veux juste exécuter un curseur, ni plus ni moins (avec traitement de mise à jour et/ou d'insertions à l'intérieur).
D'avance merci pour la structure.![]()
ci-dessous, la syntaxe pour le Transact et le PL. Si ça peut aider.![]()
De ce que je sais, ça devrait ressembler au Transact, mais ...
===========================================
MS-SQL
===========================================
============================================
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 BEGIN DECLARE @dtJour varchar(10), @code_cli varchar(20), @code varchar(20), @poste varchar(2), @ordre int //TRAITEMENTS Declare Curpro cursor for Select code1, code2, code3 from TABLE where code4 is null and code2 <> 0 open Curpro fetch Curpro into @code_cli,@code ,@poste, @ordre while @@fetch_status=0 begin //TRAITEMENTS fetch Curpro into @code_cli,@code ,@poste, @ordre end close Curpro deallocate Curpro END
ORACLE
============================================
Voilà, 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39 DECLARE dtJour VARCHAR2(10); stade VARCHAR2(6) := 'xxxxx'; client VARCHAR2(20):= 'xxxxxxxx'; cptr INTEGER := 0; cptr2 INTEGER := 0; cptr2X VARCHAR2(8); calCle INTEGER := 0; numCou INTEGER := 0; nbdeclar INTEGER := 0; CURSOR CURS2 is SELECT debut, pro, cli, indice FROM TABLE WHERE debut=dtJour AND pro = stade ORDER BY cli, indice; courrier CURS2%ROWTYPE; BEGIN // TRAITEMENTS OPEN CURS2; LOOP FETCH CURS2 into courrier; EXIT WHEN CURS2%NOTFOUND; // TRAITEMENTS END LOOP; CLOSE CURS2; END;
Partager