Oracle/c#: Wie kann ich die verwenden Sie bind-Variablen mit select-Anweisungen zur Rückgabe mehrerer Datensätze?
Ich habe eine Frage bezüglich Oracle bind-Variablen und select-Anweisungen.
Was ich erreichen möchte ist ein select auf eine Anzahl unterschiedliche Werte für den Primärschlüssel. Ich möchte, übergeben Sie diese Werte über ein array bind-Werte.
select * from tb_customers where cust_id = :1
int[] cust_id = { 11, 23, 31, 44 , 51 };
Ich dann binden Sie ein DataReader
um die Werte in eine Tabelle ein.
Das problem ist, dass die resultierende Tabelle enthält nur einen einzelnen Datensatz (für cust_id=51
). Es scheint also, dass jede Anweisung, die ausgeführt wird, unabhängig voneinander (wie es sollte), aber ich würde gerne die Ergebnisse werden als kollektive (einzelne Tabelle).
Workaround ist das erstellen einer temporären Tabelle, einfügen, alle Werte von cust_id
und dann einen join gegen tb_customers
. Das problem bei diesem Ansatz ist, dass ich würde verlangen, dass temporäre Tabellen für jede andere Art von primären Schlüssel, so möchte ich diese gegen eine Reihe von Tabellen (einige haben sogar kombinierte primary keys).
Ist es etwas, was ich bin fehlt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht die Frage, warum würden Sie wollen, dies zu tun, um mit zu beginnen. Sollte nicht die sql-Anweisung so etwas wie
Edit:
Bin ich beschränkt in Oracle aber wenn ich einen Blick in die Unterlagen, die ich denke, dass Sie vielleicht etwas wie das hier tun:
Dies würde es erlauben, Sie zu nutzen, verbindlich. Sie haben, um jeden Datensatz zurück, um Ihre eigene Sammlung, da es immer noch nur eine zu einem Zeitpunkt.
Ich weiß, das war fragte vor einer Weile, aber nicht eine brillante Antwort.
Ich würde so etwas tun - entschuldigen Sie bitte die derbe psudo-code
Also dann-Abfrage endet in(:1,:2,:3,etc) und jeder der diese gebunden sind separat.
Es gibt auch eine ähnliche Frage hier: OracleParameter und IN-Klausel