Inline-Tabelle in Oracle SQL

Ich versuche zu integrieren, mit einigen software (die ich nicht ändern kann), der eine Datenbank abfragt, die ich ändern kann.

Kann ich Ihnen diese software SQL-Abfragen, wie "select username, firstname, lastname from users where username ?"

Die software füllt die ? mit so etwas wie ('alice', 'bob'), und wird der Benutzer Informationen für Sie.

Sache ist, es ist ein weiteres Stück software, das ich wieder nicht ändern können, die gelegentlich erzeugt der Anwender, wie 'user2343290" und füttert Sie durch, um das erste Stück software. Natürlich, es wirft Fehler, weil Sie nicht finden können, dass Benutzer.

Also die Abfrage, die ich ausführen möchten ist so etwas wie dieses:

select username, firstname, lastname from users where username in ?
UNION ALL
select t.column1, 'Unknown', 'Unknown' from create_table(?) t

wo create_table generiert eine Tabelle mit den Zeilen erwähnt ?, mit der ersten Spalte namens "column1".

Alternativ:

select username, firstname, lastname from users where username in ?
UNION ALL
select t.column1, 'Unknown', 'Unknown' from _universe_ t where t.column1 in ?

wo _universe_ ist eine falsche Tabelle, die enthält jeden Wert in Spalte 1 (also unendlich groß).

Habe ich versucht, Sie ein ? von dual, aber leider funktionierte nur, wenn ? war so etwas wie ('x'), nicht ('x', 'y').

Halten Sie im Verstand, ich kann nicht das format ändern wie ? heraus kommt, so kann ich das nicht select 'alice' from dual union all select 'bob' from dual.

Jemand weiß, wie ich tun konnte, was ich erwähnt habe, oder etwas anderes, um eine ähnliche Wirkung haben?

Nicht klar für mich, so dass Sie versuchen zu verhindern, dass die db von der Rückkehr KEINE Zeilen, weil der Benutzer nicht vorhanden ist, erstellen Sie eine dummy-Tabelle mit gefälschten Benutzernamen? Vielleicht habe ich missverstanden, aber was ist das Ziel?

InformationsquelleAutor Clinton | 2011-03-31

Schreibe einen Kommentar