La déclaration suivante est utilisée sur db2 pour effectuer une opération de UPSERT:comment passer un nombre variable de paramètres à l'aide d'une instruction préparée par jdbc?
MERGE INTO mytable AS mt USING (
SELECT * FROM TABLE (
VALUES
(?, ?),
(?, ?),
—-^repeated many times, one for each row to be upserted
)
) AS vt(id, val) ON (mt.id = vt.id)
WHEN MATCHED THEN
UPDATE SET val = vt.val
WHEN NOT MATCHED THEN
INSERT (id, val) VALUES (vt.id, vt.val)
;
Chaque fois que j'appelle cette déclaration, je vais avoir un nombre différent de lignes à insérer. Est-il possible de faire cet appel en utilisant une instruction préparée? À quoi cela ressemblerait-il?
Ref: https://stackoverflow.com/a/23784606/1033422
Si le nombre de? Les marqueurs de paramètres varient d'une exécution à l'autre, vous devez ensuite les préparer à nouveau si le nombre de marqueurs de paramètres change. J'utiliserais un DGTT surtout s'il y a un très grand nombre de lignes. Oui, plus d'instructions, mais plus facile à mettre à l'échelle, car il peut indexer dynamiquement le dgtt. – mao
Merci @mao. Si vous souhaitez convertir cela en une réponse, je l'accepterais volontiers. –