![]() |
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 |
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.. |
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 |
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 |
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). |
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". |
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? |
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 |
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. |
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 05:22 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-2025 by Thomas Breitkreuz