![]() |
Datenbank: FB • Version: 2 • Zugriff über: IBDAC
FB2, IBDAC, Select mit IN preparen ?
Hallo #,
folgende Query soll optimiert werden. Select Id,Name From IdName Where Id In(:Ids) Das Ids steht für beliebige Werte. Problem: Das Prepare klappt, das ParamByName bringt keine Fehlermeldung, beim Open sehe ich im SQL-Monitor aber, dass er das :Ids nicht ersetzt hat. Ein Bug von IBDAC (Version 3.10.10) ? |
AW: FB2, IBDAC, Select mit IN preparen ?
Nein, FB unterstützt dass in dieser Form nicht.
|
AW: FB2, IBDAC, Select mit IN preparen ?
Zitat:
mit
Code:
würde ein Schuh draus, das müsste eigentlich immer funktionieren.
... IN (:P1, :P2, :P3 ..., :Pn)
|
AW: FB2, IBDAC, Select mit IN preparen ?
Hallo,
und warum klappt es unter IBExpert ? Heiko |
AW: FB2, IBDAC, Select mit IN preparen ?
Möglicherweise ersetzt dann IBExpert den Parameter durch den Wert/Inhalt.
In diesem Fall könnte die Makrofunktion von IBDAC helfen |
AW: FB2, IBDAC, Select mit IN preparen ?
Hallo,
ich schaue die mir mal an. Zur Not baue ich halt ein paar OR's. Heiko |
AW: FB2, IBDAC, Select mit IN preparen ?
Hallo,
wahrscheinlich funktioniert das IN-Statement nicht in Kombination mit Parametern. Hast Du mal versucht, den SQL-String zuerst zu erstellen und dann der Query zuzuweisen? Also ungefähr so:
Delphi-Quellcode:
Ist jetzt nicht getestet, ich denke schon, dass Firebird mit dem IN-Statement klar kommt, aber die Formatierung ist dann anders.
SQL := 'Select Id,Name From IdName Where Id in (' + IntToStr(ID1) + ',' + InttoStr(ID2) + ....usw uaf + ')';
query.SQL.Text := SQL; Gruß Frank |
AW: FB2, IBDAC, Select mit IN preparen ?
Hallo,
das hattest du falsch verstanden. Das IN klappt ja, nur wird es in einer Schleife benutzt (Es sind ~1000 IDs, FB macht da irgendwann schlapp, weil das SQL-Statement zu groß wird). Heiko |
AW: FB2, IBDAC, Select mit IN preparen ?
Hallo,
Firebird hat ein ~ 64K Limit eines SQL Statements bzw. auch ein Limit von ca. 1499 Elementen in einem IN Operator. D.h. irgendein Limit könnte hier bei dir aufschlagen. Du könntest über eine GTT gehen. Dort deine IDs insertieren und darauf das SQL mit dem IN oder einem JOIN darauf los lassen. T. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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