Bonjour a tous,
encore un petit souci. J'ai un programme WinDev qui génère un code SQL à injecter dans une base oracle. Le code, si je le lance directement sur le serveur oracle fonctionne. Passé au travers du HExecuterequeteSQL avec option Hrequetesanscorrection ne fonctionne pas et me dit caractère invalide.
Le code SQL à passer est le suivant:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 UPDATE table1 set QUANTITE = QUANTITE - case when T_PRODUIT_ID = '2395' then 1 else 0 end; UPDATE table2 SET QTE = QTE + case when T_PRODUIT_ID = '2395' AND ANNEE = '2018' AND MOIS = '10' then 1 else 0 end;
EN fait, il ne veut pas du caractère ; à la fin de chaque commande update (qui permet d’enchaîner plusieurs update en une seule injection). Si je ne mets pas ce caractère ;, bien évidemment, c'est oracle qui couine alors.
Est-ce que quelqu'un a une idée. Pour info, j'ai essayé un tout simple Update/set/where qui du coup ne requiert pas de ; et l'update fonctionne sans erreur. Ma liaison avec la base fonctionne donc sans souci.
Ah et pour ceux qui trouveraient le code bien lourd pour seulement un seul when t_produit_id, en fait c'est juste pour le test que je met un seul produit_id, en vrai, le code est comme cela:
Code SQL : 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 UPDATE table1 set QUANTITE = QUANTITE - case when T_PRODUIT_ID = 'aaaa' then 1 when T_PRODUIT_ID = 'bbbb' then 2 when T_PRODUIT_ID = 'cccc' then 8 when T_PRODUIT_ID = 'dddd' then 4 when T_PRODUIT_ID = 'eeee' then 5 . else 0 end; UPDATE table2 SET QTE = QTE + case when T_PRODUIT_ID = 'aaaa' AND ANNEE = '2018' AND MOIS = '10' then 2 when T_PRODUIT_ID = 'bbbb' AND ANNEE = '2018' AND MOIS = '10' then 4 when T_PRODUIT_ID = 'cccc' AND ANNEE = '2018' AND MOIS = '10' then 6 when T_PRODUIT_ID = 'dddd' AND ANNEE = '2018' AND MOIS = '10' then 8 . else 0 end;
Merci a tous pour vos lumières
Partager