![]() |
sql mehrere abfragen hintereinander aber wie?
hi,
ich möchte gerne folgendes in ein query objekt packen:
SQL-Code:
wie trenne ich nun diese einzelnen schritte voneinander ohne für jedes eine eigene query auszuführen?
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'output_view' AND type = 'V')
BEGIN DROP VIEW [output_view] END IF EXISTS (SELECT name FROM sysobjects WHERE name = 'search_result_view' AND type = 'V') BEGIN DROP VIEW [search_result_view] END create view search_result_view as SELECT productgroup.description as productgroup, manufacturer.name as manufacturer, product.name, product.art_no, product.size, product.unit, product.cas_no, product.minrange, product.maxrange, product.measureunit,prod_id from productgroup, manufacturer, product WHERE product.prdgrp_id = productgroup.prdgrp_id AND product.man_id = manufacturer.man_id create view output_view as select product.prod_id,sum(quantity) as quantity from invoicepos,product where invoicepos.prod_id = product.prod_id and product.prod_id IN (select prod_id from search_result_view) group by product.prod_id select search_result_view.*,o.quantity from search_result_view left join output_view o on search_result_view.prod_id = o.prod_id order by search_result_view.prod_id das heißt das alles in eine query soll. ich habe schon versucht jede abfrage einzuklammern aber das nimmt er auch nicht an. weiß einer weiter? mfg R. |
Re: sql mehrere abfragen hintereinander aber wie?
Eine Query-Komponenet dient nur dazu ein einzelnes Statement auszuführen, willst du mehrere Statements ausführen mußt du eine andere Komponente nehmen. Ich vermute mal, das du mit mssql über die Ado-Komponenten (dbGo) arbeitest. Hier heißt sie TADOCommand.
|
Re: sql mehrere abfragen hintereinander aber wie?
erstmal danke für die antwort!
du hast recht ich arbeite mit der adoquery. allerdings wundert mich das was du sagst, denn bisher habe ich es auch geschafft mehrere insert hintereinander oder aber einen insert und direkt danach eine update über einen einzelne query-komponente auszuführen. :gruebel: das einzigste wobei der eben ärger macht ist der create befehl bei dem er diesen immer an erster stelle sehen will. ich kann mich daran erinnern das es in mysql zumindest die möglichkeit gab die einzelnen abfragen über runde klammern voneinander zu trennen. :warn: hmm ich werd ma schauen was ich da über das tadocommand finde. mfg R. |
Re: sql mehrere abfragen hintereinander aber wie?
Mit Ado kenn ich mich nicht so aus. Aber bei den anderen Kompontenensammlungen wird immer zwischen Einzel- (Query) und mehfach-Statements unterschieden.
|
Re: sql mehrere abfragen hintereinander aber wie?
Für Normal werden SQL Befehle auch irgendwie abgeschlossen, ähnlich wie bei Delphi. Bei MySQL ist das in der Regel sogar ebenfalls das Semicolon.
|
Re: sql mehrere abfragen hintereinander aber wie?
das semikolon hab ich auch schon versucht .. will der aber trotzdem nicht voneinander trennen. hmm keine ahnung woran das liegt
|
Re: sql mehrere abfragen hintereinander aber wie?
Mit welcher Komponente schickst Du denn die Befehle zum Server. Versuch mal die Zeos Komponenten, da gibts sowas wie TZBatchSQL. Ansonsten bleibt Dir wohl nix anderes übrig als jeden einzelnen Befehl einzeln zum Server zu schicken.
|
DP-Maintenance
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Datenbanken" verschoben.
|
Re: sql mehrere abfragen hintereinander aber wie?
Ich setze Kommandos (bis ca. 1000 Zeichen) mit der Methode Execute - Methode der TADOConnection ab. Jeder Befehl in eine neue Zeile, aber einzelne Befehle kann man auch strukturieren:
SQL-Code:
Die CreateViews müssen aber mit 'GO' abgeschlossen werden, wenn danach noch etwas kommen soll. Das musst Du mal ausprobieren. Ich erzeuge jedenfalls komplette Views-Sammlungen auf diese Weise: Alle Befehle in ein Stringgrid, und wenn es mehr als 1000 Zeichen sind, dann die Befehlssammlung einfach per Execute abschicken. Warum diese Grenze ist, weiss ich nicht. Es nervt zwar ein wenig, aber da man die Execute's sowieso in einer TADOConnection-Transaktion kapseln sollte, macht das nichts.
Select Foobar,
BlaFasel From SomeBoo Insert Into Foo Select 1,2 Create Procedure MyProc @Param int as if (@Param = 1) select ..... |
Re: sql mehrere abfragen hintereinander aber wie?
kannst du mir bitte sagen wie das mit dem GO zum abschließen der view gehen soll? ich habe versucht eine einzige view sowohl mit tadoquery als auch tadocommand auszuführen ... bei beidem kommt allerdings die fehlermeldung "kein resultset" :cry:
kann da eina helfen? :? schon ma danke! mfg R. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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 by Thomas Breitkreuz