Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Param count und Param datatype über eine TZQuery ermitteln (https://www.delphipraxis.net/124821-param-count-und-param-datatype-ueber-eine-tzquery-ermitteln.html)

cytrinox 25. Nov 2008 22:15

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?

mkinzler 25. Nov 2008 22:18

Re: Param count und Param datatype über eine TZQuery ermitte
 
Welchen Wert hat .ParamCheck?

cytrinox 25. Nov 2008 22:22

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?

mkinzler 25. Nov 2008 22:23

Re: Param count und Param datatype über eine TZQuery ermitte
 
Wenn er True ist, werden die Parameter automatisch angelegt, sonst nicht

cytrinox 25. Nov 2008 22:32

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.

mkinzler 25. Nov 2008 22:36

Re: Param count und Param datatype über eine TZQuery ermitte
 
Dann bleibt dir ja nur übrig, den SQL Code manuell zu parsen

cytrinox 25. Nov 2008 22:40

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.

mkinzler 25. Nov 2008 22:44

Re: Param count und Param datatype über eine TZQuery ermitte
 
Bzw. das DBMS. Führe mal einen Prepare aus.

cytrinox 25. Nov 2008 22:46

Re: Param count und Param datatype über eine TZQuery ermitte
 
Und wie? TZQuery hat keine prepare() Methode oder ähnliches.

Andreas H. 30. Nov 2008 18:49

Re: Param count und Param datatype über eine TZQuery ermitte
 
Hallo,

das Thema interssiert mich auch!

Keiner ne Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr.
Seite 1 von 2  1 2      

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