AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken auf Query-Inhalt kann nach ExecSQL zugegriffen werden
Thema durchsuchen
Ansicht
Themen-Optionen

auf Query-Inhalt kann nach ExecSQL zugegriffen werden

Ein Thema von hoika · begonnen am 5. Nov 2020 · letzter Beitrag vom 5. Nov 2020
Antwort Antwort
Seite 1 von 2  1 2      
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#1

auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 17:44
Datenbank: Firebird • Version: 2.01 • Zugriff über: IBDAC
Hallo,
ich habe hier ein merkwürdiges Problem.

Delphi-Quellcode:
var
  Q: TQuery;
  ID: Integer;
begin
  ...
  Q.SQL.Text:= 'SELECT Gen_ID(G_Generator_ID,1) FROM RDB$Database ';
  Q.ExecSQL;
  ID := Q.Fields[0].AsInteger;
Und das klappt !!!
Das müsste doch Open statt ExecSQL sein.
Ist das irgendein Cache?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 17:51
Die Query wird vermutlich immer versuchen ein Resultset anzufordern, auch bei ExecSQL.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 17:56
Hallo,
naja, das ist "doof".
Warum will ich z.B. bei einem Update ein Result-Set?

Nun ja, ich bin bloß bei einem Code-Review drüber gestolpert.

Vielleicht wird ja im IBDAC nach GEN_ID gescannt,
das kann ich mir aber nicht vorstellen.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#4

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 18:29
Eigentlich wäre ich auch davon ausgegangen, dass beim ExecSQL/Execute kein ResultSet runtergeladen wird,
also nur "Ausführen" und fertig, im Gegensatz zum Open bzw. Active=True.





Dachte beim PgQuery zum PgScript wäre der einzige Unterschied, dass PgScript vorher den SQL.Text an den ; aufteilt und dann mehrere Queries einzeln ausführt,
aber dass ansonsten Beides beim Execute/ExecSql gleich arbeitet, also nie das ResultSet runterlädt.

Beim Open/Active wird zumindestens immer ein ResultSet verlangt, sonst knallt es dort.
PgQuery hat hier sogar einen Bug, dass es dann, wenn das SELECT mit Spalten ohne "Wert", das Query doppelt ausführt ... so dauert SELECT pg_sleep(5) beim Open/Active plötzlich 10 Sekunden.
Schön auch beim Ausführen von Funktionen, wenn die drinnen dann alles doppelt machen ... hochzählen, insert usw., was dann knallt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Nov 2020 um 20:39 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 19:08
Hallo,
ja, das dachte ich auch.
Aber ist nicht so, zumindestens in meiner IBDAC-Version.
Heiko
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 20:16
Ich habe dunkel in Erinnerung, dass es mit SP zu tun haben könnte.
Die haben u.U. Out Parameter. Und da ist vielleicht irgendso eine komische Mechanik drin, die das dann in ein Resultset tütet.
Vielleicht betrifft das auch so "stink normale" Daten wir "Rows Affected" beim Update.

Hab ich aber vielleicht auch nur geträumt.
Gruß, Jo
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 20:59
Hallo,
Zitat:
Rows Affected
Ja, wenn man eine Update-Query z.B. im IBExpert ausführt gibt es ja auch eine "xx rows updated/affected"-Meldung.
Dann holt der liebe Holger bestimmt auch vom FB irgendwie selber.
Heiko
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#8

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 21:16
Steht zumindest in der IBDAC Doku https://www.devart.com/ibdac/docs/de....execute().htm ziemlich klar, dass ein ExecSQL auf einem SELECT ein Open durchführt.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 21:23
Hallo,
hm Thomas der Link geht zu Execute und nicht ExecSQL.

Aber könnte die Lösung sein.
Heiko
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#10

AW: auf Query-Inhalt kann nach ExecSQL zugegriffen werden

  Alt 5. Nov 2020, 21:50
Ja, sorry. Vergessen zu erwähnen: ExecSQL macht das selbe wie Execute.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:54 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