AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Parameter für ein SQL Abfrage mit IN
Thema durchsuchen
Ansicht
Themen-Optionen

Parameter für ein SQL Abfrage mit IN

Ein Thema von ggscholz · begonnen am 19. Jan 2025 · letzter Beitrag vom 20. Jan 2025
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#2

AW: Parameter für ein SQL Abfrage mit IN

  Alt 19. Jan 2025, 03:22
Nein, je Wert ein Parameter, aber nicht ein Parameter für mehrere Werte.

Wieviele Werte musst Du maximal abdecken können?

Wenn das klar und eindeutig definiert ist, dann fülle die Parameter von links nach rechts mit den abzufragenden Werten und für die verbleibenden Werte nimmst Du immer den letzten Wert.

Sinngemäß sowas in der Art:
SQL-Code:
select
   count(w.warehouseid) as total
   from
   warehouse w
   where
   w.locationid IN (:p0, :p1, :p2, :p3, :p4, :p5, :p6, :p7, :p8, :p9)
In Delphi sinngemäß sowas:
Delphi-Quellcode:
  Parameter[0].Value := 0;
  Parameter[1].Value := 1;
  Parameter[2].Value := 2;
  Parameter[3].Value := 3;
  Parameter[4].Value := 3;
  Parameter[5].Value := 3;
  Parameter[6].Value := 3;
  Parameter[7].Value := 3;
  Parameter[8].Value := 3;
  Parameter[9].Value := 3;
Ergäbe dann ein
SQL-Code:
select
   count(w.warehouseid) as total
   from
   warehouse w
   where
   w.locationid IN (0, 1, 2, 3, 3, 3, 3, 3, 3, 3)
Unelegant, ist bei 'ner IN-Klausel aber ok, aber in der Flexibilität immer begrenzt.

Alternative:

Eine temporäre Tabelle bauen, sowas in der Art: create table InWerte (Wert integer not null);
Diese Tabelle mit den abzufragenden Werte befüllen und das Abfrage-SQL anpassen.
SQL-Code:
select
   count(w.warehouseid) as total
   from
   warehouse w
   where
   w.locationid IN (select wert from InWerte)
Bei diesem Konstrukt kannst Du 1:n Werte abfragen. Bei einer über Konstanten oder Parameter zusammengebauten Abfrage, ist die Menge der Werte (datenbankabhängig) begrenzt.

Anschließend das Leeren der Tabelle InWerte nicht vergessen.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 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 by Thomas Breitkreuz