Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Script über TADOConnection ausführen schlägt fehl (https://www.delphipraxis.net/164548-sql-script-ueber-tadoconnection-ausfuehren-schlaegt-fehl.html)

Alexandra 17. Nov 2011 13:58

Datenbank: MySQL • Version: 5.1.11 • Zugriff über: TADOConnection

SQL-Script über TADOConnection ausführen schlägt fehl
 
Hallo zusammen,

ich google nun schon seit einiger Zeit nach einer Lösung für mein Problem, konnte aber bisher leider nichts Passendes finden.
Vielleicht kann mir ja hier jemand weiterhelfen.

Ich muss ein größeres SQL-Script in Delphi ausführen.
Bisher habe ich für solche Fälle ein TADOQuery verwendet und das Script in einzelne SQLs zerlegt.

Da dieses Script aber Benutzervariablen enthält, deren Wert durch das Script verändert wird, funktioniert das in diesem Fall nicht.

Auch mit der Verwendung von TADOConnection hatte ich wenig Erfolg.
Bereits nach dem ersten Delimiter bekomme ich eine Syntax-Fehlermeldung.

Hat jemand eine Idee?

Vielen Dank
Alexandra

jobo 17. Nov 2011 15:07

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Ich glaub, die ADO Componenten können eigentlich nur ein Statement verarbeiten. Also TADOQuery im wesentlichen.
Ich behelfe mir bei Oracle, indem ich einen anonymen Block bilde, aber da gibt es wiederum ein Größenbeschränkung und mir ist auch nicht bekannt, ob es etwas Vergleichbares für mySQL gibt.
Da gibts hier aber sicher Kenner.

Ansonsten müsste man andere Komponenten finden.

P.S.:
Und herzlich willkommen..

Alexandra 18. Nov 2011 08:26

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Hallo Jo,

vielen Dank für die schnelle Antwort :-D

TADOQueries können nur ein Statement verarbeiten, aber TADOConnection sollte
eigentlich mit einem Script klarkommen.
Vielleicht habe ich nur eine Einstellung übersehen?

Bei den Komponenten bin ich leider ziemlich festgelegt.

Viele Grüße
Alexandra

mikhal 18. Nov 2011 08:41

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Schon mal mit TAdoCommand versucht?

Sollte eigentlich mehrere Statements abarbeiten können.

Grüße
Mikhal

Sir Rufo 18. Nov 2011 12:09

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Soweit ich das verstanden habe, kann ADO immer nur ein Statement ausführen.
Wenn die Verbindung aber nicht unterbrochen wird, bleibt die Session erhalten und auch die gesetzten Benutzer-Variablen (sind ja Session-Variablen).

shmia 18. Nov 2011 12:21

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Eigentlich müsste es doch eine Stored Procedure geben, mit der man ein SQL-Script ausführen kann.
Beim MS SQL Server gibt es z.B. "sp_executesql".

jobo 18. Nov 2011 12:53

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Auch ein ADO Command Objekt kann m.E. kein Script ausführen.
Die ADOConnection erst Recht nicht, vielleicht verleiten Dich BeginTrans usw. zu dieser Idee. Diese ADOConnection-Befehle beziehen sich aber lediglich auf Start und Abschluss von DML Anweisungen, die über die anderen ADO Compos (Command, Query, StoredProc) angefallen sind/anfallen werden.

Ob es eine SP für Scripte gibt, weiß ich auch nicht.

Was ist denn der Script Inhalt, um den es hier geht? Z.B. klassisches DDL Script, Modelle einspielen Stammdaten einfügen?

Slater 18. Nov 2011 13:10

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Servus...
bei MySQL gibt es sogenannte Stored Procedures... aber auch Trigger...

Vielleicht hilft es dir ja wenn Du dein Großes Script auf dem Server "vorbereitetst" und dann mit call in einem einzelnen Statement abrufst und alles mögliche als Parameter übergibst...


Cheers

Furtbichler 18. Nov 2011 18:50

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
ADO kann (zumindest mit MSSQL) beliebig lange Skripte ausführen. Diese können tausende einzelner SQL-Kommandos enthalten. Irgendwann bemerkte ich mal eine Beschränkung auf 1000 Zeichen, aber neulich habe ich das mal wieder verifiziert und das simmt so nicht.

Ich verwende immer die Execute-Methode der TADOConnection für meine ellenlangen Skripte.

Wenn es hier zu Problemen kommt, dann liegt es vielleicht am Delimiter. Oder an der Parametrierung der Anweisung. So ist z.B. das Datumsformat meines ollen SQL-Servers anders, wenn ich in T-SQL etwas ausführe, als wie wenn ich das über ADO absetze.

jobo 22. Nov 2011 06:56

AW: SQL-Script über TADOConnection ausführen schlägt fehl
 
Diese Methode unter TADOConnection war mir nicht bekannt. Meine Tests mit Oracle haben allerdings keine brauchbaren Ergebnisse gebracht.
M.E. verhält sich die Komponente unter Oracle genauso, wie query oder command. Vielleicht steckt auch nichts anderes dahinter als ein TADOCommand Aufruf. Anonyme Blöcke sind ok, aber echte Scripte nicht.
(ich lasse mich gerne vom Gegenteil überzeugen)

Wie das unter mySQL und MSSQL aussieht, kann ich nicht sagen. MS würde ich immerhin zutrauen, dass Scripte mit der eigenen DB laufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:11 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