J'ai une question concernant les variables de liaison Oracle et les instructions select.Oracle/C#: Comment utiliser les variables bind avec des instructions select pour renvoyer plusieurs enregistrements?
Ce que je voudrais réaliser est de faire une sélection sur un certain nombre de valeurs différentes pour la clé primaire. Je voudrais passer ces valeurs via un tableau en utilisant des valeurs de liaison.
select * from tb_customers where cust_id = :1
int[] cust_id = { 11, 23, 31, 44 , 51 };
Je lie alors un DataReader
pour obtenir les valeurs dans une table.
Le problème est que la table résultante contient uniquement un enregistrement unique (pour cust_id=51
). Il semble donc que chaque énoncé soit exécuté indépendamment (comme il se doit), mais j'aimerais que les résultats soient disponibles sous forme de collectif (table unique).
Une solution de contournement consiste à créer une table temporaire, insérer toutes les valeurs de cust_id
, puis effectuer une jointure par rapport à tb_customers
. Le problème avec cette approche est que j'aurais besoin de tables temporaires pour chaque type différent de clé primaire, comme je voudrais l'utiliser contre un certain nombre de tables (certaines ont même des clés primaires combinées).
Y at-il quelque chose qui me manque?
Oui mon besoin sera satisfaite par une ou sur la sélection, mais je vais pousser éventuellement des milliers d'articles sur la chaîne de sélection dans ce cas, et une stratégie en utilisant des variables de liaison pourrait être éventuellement plus efficace? – twiga