Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDAC - SQL mit gesetzten Parameter abfragen? (https://www.delphipraxis.net/183847-firedac-sql-mit-gesetzten-parameter-abfragen.html)

Eppos 9. Feb 2015 09:26

Datenbank: Firebird • Version: 2.5.3 • Zugriff über: FireDAC

FireDAC - SQL mit gesetzten Parameter abfragen?
 
Hallo zusammen,

gibt es die Möglichkeit, sich aus dem TFDQuery den SQL mit den Parameter zurück zu liefern?

Beispiel:
Delphi-Quellcode:
Query.Sql.Text := 'Insert Into Tabelle1 (ID,Text) Values (:ID,:Text)';
Query.ParamByName( 'ID' ).AsInteger := 1;
Query.ParamByName( 'Text' ).AsString := 'Testtext';

ShowMessage( Query.GetSQLTextWithParams {Insert Into Tabelle1 (ID,Text) Values (1,'Testtext')} ); // Möglich???
Gruß
Eppos

mkinzler 9. Feb 2015 09:34

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Da die Parameter vom Server in die (prepared) Abfrage eingefüht werden, müsste man die resultierende Abfrage von dort erfragen.
Bei IBDAC/UniDAC kann man das per Monitoring (SQl Monitor). Bei FireDAC gibt es diesen ja auch, könnte also entsprechend funktionieren.

Sir Rufo 9. Feb 2015 18:12

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Korrekterweise müsste man sagen: "Da die Parameter eigentlich vom Server in die prepared Abfrage ..." denn speziell FireDAC macht das nicht durchgängig bei jedem Server (wird das überhaupt bei einem gemacht - bis jetzt noch nicht gesehen, bei MySQL definitiv nicht).

mkinzler 9. Feb 2015 19:24

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Echt? Damit disqualifiziert sich FireDAC für den professionellen Einsatz.

Sir Rufo 9. Feb 2015 19:59

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Zitat:

Zitat von mkinzler (Beitrag 1289310)
Echt? Damit disqualifiziert sich FireDAC für den professionellen Einsatz.

Wenn man Wireshark vertrauen kann, dann wird bei MySQL immer das komplette Statement mit eingesetzten Parametern übertragen.

mkinzler 9. Feb 2015 20:26

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Das wäre dann Abtraktion, wie man sie nicht machen sollte, wenn es ein DBMS gibt, welches keine Parameter kann, dann simuliere diese für alle DBMS.

Laut der Hilfe zu FireDAC sollte es aber richtig funktionieren

Zitat:

Zitat von http://docs.embarcadero.com/products/rad_studio/firedac/Executing_Command.html
Using parameters

The parameterized query usage is one of the best practices at SQL database application development. Main benefits are:

you may compose single SQL command and use it few times with different parameter values. DBMS will build command execution plan only once. That reduces the DBMS engine load.
when you will execute the command next time, only parameter values will be transferred to the DBMS engine. That reduces network load.
you will not care about correct SQL constant formats, for example - how to properly write a date constant in Microsoft Access SQL.


Sir Rufo 9. Feb 2015 20:58

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Du weißt doch wie es ist: Papier ist geduldig, Wireshark unbestechlich.

Ich habe es auch nicht geglaubt und wurde eines besseren belehrt.

Uwe Raabe 9. Feb 2015 22:39

AW: FireDAC - SQL mit gesetzten Parameter abfragen?
 
Also bei MSSQL funktioniert es zumindest.

Aus
Delphi-Quellcode:
SELECT * FROM LIZENZEN
WHERE MAJVERSION < :version
macht FireDAC laut SQL Server Profiler
Delphi-Quellcode:
declare @p1 int
set @p1=1
exec sp_prepare @p1 output,N'@P1 int',N'SELECT * FROM LIZENZEN
WHERE MAJVERSION < @P1
',1
select @p1

exec sp_execute 1,9

exec sp_unprepare 1


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz