![]() |
Datenbank: Firebird/MSSQL • Version: 2.0/ab 2000 • Zugriff über: ZEOS 6.x
Param count und Param datatype über eine TZQuery ermitteln
Hi,
ich muss über eine TZQuery die Anzahl von Parametern sowie die Typen der Parameter feststellen für eine SQL Statement dass ich von einer Funktion übergeben bekomme. Erschwerend kommt wohl noch hinzu, dass die Statements unnamed-params verwenden, also ? statt :pname. Die SQL Statements werden nicht von mir generiert, ich muss lediglich über eine API Auskunft darüber geben können wie viele Params und von welchem Typ die sind und danach bekomme ich die Werte für die Parameter übermittelt. ZQuery.params.count gibt 0 aus und params.parsesql() ignoriert die ? Parameter, das hilft mir also leider auch nicht weiter. Btw. kann es auch gut sein, dass ich statt einem "SELECT ..." ein execute Befehl für eine Procedure bekomme, gibts da irgendwas das man bei TZQuery + Procedure beachten müsste? |
Re: Param count und Param datatype über eine TZQuery ermitte
Welchen Wert hat .ParamCheck?
|
Re: Param count und Param datatype über eine TZQuery ermitte
Öh, gute Frage. Ich hab grad meine Windows-Kiste runtergefahren da ich heute nichtmehr mit einer Antwort gerechnet hatte *g*
Welchen Wert sollte es den haben und wie oder was beeinflusst das ganze? |
Re: Param count und Param datatype über eine TZQuery ermitte
Wenn er True ist, werden die Parameter automatisch angelegt, sonst nicht
|
Re: Param count und Param datatype über eine TZQuery ermitte
Ich hab paramcheck jetzt mal auf true gesetzt.
nach einem ZQuery.sql.text = 'SELECT * FROM DATA WHERE ID = ?;'; Sagt mir params.count aber immer noch 0. |
Re: Param count und Param datatype über eine TZQuery ermitte
Dann bleibt dir ja nur übrig, den SQL Code manuell zu parsen
|
Re: Param count und Param datatype über eine TZQuery ermitte
Ich habs da mit sehr verschalteten Subselects oder mit vielen inner joins zu tun, ich kann doch dafür unmöglich einen eigenen Parser schreiben. Außerdem müsste ich ja für jeden Parameter erstmal das Feld finden mit dem es verglichen werden soll, ein zusätzliches Query losschicken und dann den Result-type bestimmen. Das sollte doch gerade ZEOS ganz von alleine hinbekommen?
Schließlich bieten sowohl Firebird als auch MSSQL fertige APIs die das machen. |
Re: Param count und Param datatype über eine TZQuery ermitte
Bzw. das DBMS. Führe mal einen Prepare aus.
|
Re: Param count und Param datatype über eine TZQuery ermitte
Und wie? TZQuery hat keine prepare() Methode oder ähnliches.
|
Re: Param count und Param datatype über eine TZQuery ermitte
Hallo,
das Thema interssiert mich auch! Keiner ne Idee? |
Re: Param count und Param datatype über eine TZQuery ermitte
Bist du sicher?
Also ich kenne keine Query, die den Parametertyp selbst bestimmt. Sowohl bei MS als auch bei Firebird habe ich den Parametertyp selbst angegeben mit ParameterbyName ('xxx').AsTyp. Viele Grüße Dirk |
Re: Param count und Param datatype über eine TZQuery ermitte
Ich hab die Frage nun auch mal im Zeos-Forum direkt gestellt:
![]() So werd ichs jetzt auch machen. Einlesen, abzählen, ersetzen und über :pX die werte setzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:32 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