![]() |
Datenbank: Oracle • Version: 12 • Zugriff über: FireDac
In Operator in Abfragen benutzen
Guten Morgen!
Ich versuche mit Delphi Seattle eine Oracle-Datenbankabfrage abzusenden. Darin möchte ich den in-Operator benutzen um nur bestimmte Artikel anzuzeigen. Am liebsten würde ich das ganze durch Parameter (:Artikel1, :Artikel2) realiseren um SQL-Injections zu vermeiden. Nun habe ich hier gelesen, dass dies nicht ohne Weiteres möglich ist: ![]() Deshalb meine Frage an die DelphiPraxis Leute: Wie realisiert ihr in euren Anwendungen eine in-Operator Abfrage? Oder verzichtet ihr auf den in-Operator komplett? Gruß, schnee |
AW: In Operator in Abfragen benutzen
Moin...:P
Das mit dem IN hat mit der Delphi Version nicht wirklich was zu tun. Die IN Menge kann man leider nicht als Parameter übergeben. Hier gibt es dann 3 Möglichkeiten. 1. Die IN Menge im SQL mit + '1,' + '2' zusammensetzen. Strings wären zu Quoten. (SQL Injection gefährdet) 2. Man macht sich eine Tabelle für IN Statements in der DB. Dort legt man die IN Werte als Datensätze ab. Als Zusammengehörigkeit verwendet man z.B. eine GUID. Im eigentlichen Statement macht man dann ein subselect auf diese Tabelle mit der GUID. Danach werden die Werte wieder entfernt. Hier kommt es darauf an ob das ganze performant sein muß... 3. SP in der DB -> generiert / aktualisiert eine View z.B. :thumb: |
AW: In Operator in Abfragen benutzen
Im SQL-Server schreibe ich mir eine UDF, die mir eine Tabelle liefert. So wird z.B. aus "1,2,3" die Tabelle
Code:
Sowas geht doch bestimmt auch in Oracle.
select * from Daten
where exists ( select 1 from UDF_StringToTable(@Selection) where Value = Daten.Wert ) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz