Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie funktioniert SQL.LoadFromFile (https://www.delphipraxis.net/28553-wie-funktioniert-sql-loadfromfile.html)

I_need_help 26. Aug 2004 10:41


Wie funktioniert SQL.LoadFromFile
 
Hallöchen zusammen,

ich weiß, dass dieses Thema schon einmal hier angesprochen wurde, nur die Antworten passen nicht so ganz zu meinem Problem.

Ich möchte eigentlich gern generell mal wissen, was bei der Funktion SQL.LoadFromFile genau im Hintergrund läuft. Warum? Ich versuche auf diese Weise eine .sql-Datei auszuführen (per PL/SQL geschrieben mit declare, begin, end u.s.w.).

Doch leider läuft das nicht so, wie ich gern hätte. Statt dessen wird wohl alles gelesen und interpretiert (auch Kommentare) und nach der Bedeutung von "Parametern" gefragt, bspw. wenn im SQL-Kommentar die Anweisung

SQL-Code:
 spool C:\meinordner\meinlog.log
steht.

Werden beim Aufruf SQL.LoadFromFile grundsätzlich nur SQL-Anweisungen in der Form abgearbeitet, wie man sie auch bei SQL.ADD() reinschreibt?? Gibt es wenn ja einen anderen Weg aus Delphi heraus PL/SQL-Files ans Laufen zu bringen??

Bin echt ratlos...

Gruß i_need_help

Jelly 26. Aug 2004 10:48

Re: Wie funktioniert SQL.LoadFromFile
 
Zitat:

Zitat von I_need_help
Werden beim Aufruf SQL.LoadFromFile grundsätzlich nur SQL-Anweisungen in der Form abgearbeitet, wie man sie auch bei SQL.ADD() reinschreibt??

Ganz genau... SQL ist vom Typ TStrings, was nichts anderes ist als eine Liste von Strings. Ganze SQL Skripte kanns du also so nicht ausführen, sorry. Ich hatte das Problem auch schon, sowohl bei MySQL als bei MSSQL, und habs so gelöst, daß ich mir die einzelnen SQL Anweisung rausgeaprsed hab und einzel ausgeführt hab. Die Anweisung sind bei MySQL durch ";" getrennt, bei MSSQL durch den Befehl "GO".

Gruß,

Robert_G 26. Aug 2004 10:52

Re: Wie funktioniert SQL.LoadFromFile
 
TQueryDescendant.SQL ist ja vom Typ TStrings. Also wird ein LoadFromFile nichts weiter machen, als den inhalt der Datei in die StringList zu laden. ;)
Zitat:

Code:
-- #1--> spool C:\meinordner\meinlog.log

Das ist kein Befehl, mit dem Oracle etwas anfangen kann. "Spool" ist teil der SQL Plus Syntax.
wenn du ähnliches bewerkstelligen willst, schaue dir mal die Packages DBMS_OutPut oder UTL_File an.

I_need_help 26. Aug 2004 10:56

Re: Wie funktioniert SQL.LoadFromFile
 
oh man, das habe ich fast befürchtet.

das heißt also, jedes einzelne Statement aus meinem sql-script packe ich in eine add()-Anweisung??

Robert_G 26. Aug 2004 11:01

Re: Wie funktioniert SQL.LoadFromFile
 
Zitat:

Zitat von I_need_help
oh man, das habe ich fast befürchtet.

das heißt also, jedes einzelne Statement aus meinem sql-script packe ich in eine add()-Anweisung??

Natürlich nicht. ;)
Sonst wärst du wieder bei SQL.LoadFromFile angelangt.

Nehmen wir an du hast das da:
SQL-Code:
  INSERT INTO X (Y, Z) VALUES (1, 2);
  INSERT INTO X (Y, Z) VALUES (3, 4);
  INSERT INTO X (Y, Z) VALUES (5, 6);
Was hält dich davon ab, es in einen anonymen Block zu packen?
SQL-Code:
begin
  INSERT INTO X (Y, Z) VALUES (1, 2);
  INSERT INTO X (Y, Z) VALUES (3, 4);
  INSERT INTO X (Y, Z) VALUES (5, 6);
end;

I_need_help 26. Aug 2004 11:26

Re: Wie funktioniert SQL.LoadFromFile
 
okay danke erst mal. ich probier mal ein bisschen rum.

eine weitere idee wär ja, aus delphi das sql-worksheet zu starten, die datei da reinzuladen und ausführen zu lassen... :)

I_need_help 26. Aug 2004 15:32

Re: Wie funktioniert SQL.LoadFromFile
 
Hallöchen nochmal,

nach langem Hin- und Herprobieren hab ich nun eine etwas andere Lösung gefunden. Dank des gut bestückten Forums hier, starte ich aus Delphi heraus einen Batch, der dann mein SQL auf der Windows-Shell ausführt. Verwendet hab ich dafür TCustomFileRun für das Starten der *.bat und in der *.bat starte ich mit sqlplus USER/passwort@Datenbank meinedatei.sql die SQL-Abfrage.

Alles was nun noch fehlt ist, wie das geöffnete Shellfenster wieder geschlossen werden kann, da der "quit" oder "exit" Befehl im *.bat ignoriert wird (befinde mich ja nach sqlplus-Aufruf in der Kommandozeile von SQL Plus).

Aber schon mal vielen Dank, stöbere immer wieder gern hier. :-D

Alfons_G 26. Aug 2004 16:57

Re: Wie funktioniert SQL.LoadFromFile
 
Nachdem Du offenbar mit Oracle arbeitest: Hast Du schon mal die ohnehin empfehlenswerten ODAC-Komponenten von www.crlab.com abgeschaut? Dort gibt es auch eine SQL-Skript-Komponente.

:coder:

Robert_G 26. Aug 2004 17:05

Re: Wie funktioniert SQL.LoadFromFile
 
Zitat:

Zitat von Alfons_G
Nachdem Du offenbar mit Oracle arbeitest: Hast Du schon mal die ohnehin empfehlenswerten ODAC-Komponenten von www.crlab.com abgeschaut? Dort gibt es auch eine SQL-Skript-Komponente.

Es gibt auch DirectOracleAccess von allround automations.
Mit einem Unterschied, die DOA Klassen sind sehr eng mit der OCI und dadurch mit dem OracleClient verschmolzen -> _wesentlich_ effizienteres Caching als bei CoreLabs. ;)

Alfons_G 27. Aug 2004 12:47

Re: Wie funktioniert SQL.LoadFromFile
 
Ich verwende ODAC üblicherweise mit aktiver NET-Option, da unsere Kunden oft keinen Oracle-Client auf ihren Systemen installiert haben wollen.

:coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:39 Uhr.
Seite 1 von 2  1 2      

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