AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Source Code Formatter für SQL gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Source Code Formatter für SQL gesucht

Ein Thema von GuenterS · begonnen am 14. Nov 2006 · letzter Beitrag vom 26. Nov 2006
Antwort Antwort
Seite 2 von 2     12   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11

Re: Source Code Formatter für SQL gesucht

  Alt 15. Nov 2006, 01:34
Zitat von jensw_2000:
Hier ist ein kostenloser Online-Codeformatter.
Will er doch (halb zurecht) nicht online haben.

Zitat von GuenterS:
...Kommentare ersetzen kann es nicht (wie auch kein anderer Source Code Formatierer)
Wie soll er denn die auch ersetzen ? Standard-Kommentare gehen mit Sicherheit und dann raten oder wie, wie der genauer zu formulieren ist ? Das kann wohl nur der Programmierer selbst.

Relativ spät wurde bekanntgegeben, daß es um MS-SQL geht. Kenne das zu wenig. Was kann denn da das vewendete Admin-Tool überhaupt ? Habe vorher schon in IBExbert geguckt, wie das hier genau aussieht. Deklaration usw. wird bei SPs automatisch eingerückt (geht ähnlich wie mit Delphi. Einrückungstiefe usw. lässt sich einstellen). Der Procedure - Rumpf liegt im Ermessen des Developers.

Allerdings fiel mir folgendes auf : der DB-Source beherrscht Syntax-Highlighting. Wie siehts denn damit aus ? Das ist doch wichtiger als Einrückungen. Und dann gehts auch richtig los mit Alzaimers Sprach-Bedenken.

Lade die betreffenden Zeilen notfalls in Delphi, verschiebe sie spaltenweise und dann eben wieder zurück damit.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von rwachtel
rwachtel

Registriert seit: 26. Aug 2004
Ort: Köln
530 Beiträge
 
RAD-Studio 2010 Pro
 
#12

Re: Source Code Formatter für SQL gesucht

  Alt 15. Nov 2006, 06:53
Zitat von Hansa:
[...]
Zitat von GuenterS:
...Kommentare ersetzen kann es nicht (wie auch kein anderer Source Code Formatierer)
Wie soll er denn die auch ersetzen ? [...]
Noch früh am Morgen?

Ich glaube, es ging darum, dass der Einsatz eines entsprechenden Tools Kommentare nicht überflüssig macht...
Robert Wachtel
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#13

Re: Source Code Formatter für SQL gesucht

  Alt 15. Nov 2006, 07:28
Zitat von Hansa:
Zitat von jensw_2000:
Hier ist ein kostenloser Online-Codeformatter.
Will er doch (halb zurecht) nicht online haben.
Hmmm,
als ich das letzte mal auf der Seite war, wurde das Tool für wenig Geld auch als Offline-Version angeboten.
Wenn ihm die Onlineversion gefällt, kann er sich ja mal mit dem Autor in Verbindung setzen.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#14

Re: Source Code Formatter für SQL gesucht

  Alt 15. Nov 2006, 08:08
Hab mir eben Aqua-Data-Studio angeschaut. Ganz nett, aber so richtig klappt das mit dem Formatieren auch nicht:
Aus

SQL-Code:
ALTER PROCEDURE [dbo].[DeleteAllCustomers]
@bla int
AS
IF @bla=1287
BEGIN
   SELECT * FROM Customer;
END
GO
wird
SQL-Code:
ALTER PROCEDURE [dbo].[DeleteAllCustomers]
  @bla INT AS IF
  @bla=1287
  BEGIN SELECT *
        FROM Customer;
        END
GO
Ahh.... Ja

Langsam verstehe ich GuenterS...

Mein Problem sind nicht die paar Einrückungen bei IF / WHILE etc. , sondern die Lesbarkeit von komplexen SELECT's.
Ich hab 20 Jahre mit Leertaste eingerückt, da gewöhnt man sich dran, aber diese SELECTS (mit JOIN, subselects etc. ) sind immer wieder eine Herausforderung. Und ob man da einen Formatter findet, der das einigermaßen hinbekommt ...

Aber wie man sieht, klappts ja wohl auch noch nicht mal mit einfachen Strukturen. Im Übrigen dürte das keine Eigenheit von TSQL sein...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
guidomarcel

Registriert seit: 25. Nov 2006
2 Beiträge
 
#15

Re: Source Code Formatter für SQL gesucht

  Alt 25. Nov 2006, 22:33
Hallo,
SQLinForm ist zwar ein Online SQL Formatter, aber es werden keine Daten vom Applet an den Server geschickt. Das kann man einfach testen, indem man die Internet-Verbindung kappt. Das Applet funktioniert dann noch immer, da es lokal im JRE ausgeführt wird.

Ich wäre im übrigen sehr dankbar für Formatierungsvorschläge, vor allem bei den Stored Procedures.

Viele Grüße
GuidoMarcel
www.sqlinform.com
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#16

Re: Source Code Formatter für SQL gesucht

  Alt 26. Nov 2006, 00:32
Ist das Thema immer noch nicht gegessen ? Formatiere die SP doch so, wie es auch von Delphi her gewohnt ist. Also einrücken usw. Siehe IBExpert. Aber es geht ja um MS-SQL.

Warum gibt es eigentlich keinen Formatter für SQL ? Weil es nicht nötig ist. Es war auch die Rede von 5-Seiten SP. Wer so was macht, der macht IMHO was verkehrt. 8) Wer soll denn das lesen und verstehen ? Das muss man mehr unterteilen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Source Code Formatter für SQL gesucht

  Alt 26. Nov 2006, 09:58
Zitat von Hansa:
Ist das Thema immer noch nicht gegessen ? Formatiere die SP doch so, wie es auch von Delphi her gewohnt ist. Also einrücken usw. Siehe IBExpert. Aber es geht ja um MS-SQL.

Warum gibt es eigentlich keinen Formatter für SQL ? Weil es nicht nötig ist. Es war auch die Rede von 5-Seiten SP. Wer so was macht, der macht IMHO was verkehrt. 8) Wer soll denn das lesen und verstehen ? Das muss man mehr unterteilen.
Zwischen Theorie & Praxis ist (leider) immer (meistens) ein (großer) Unterschied. Es soll auch vorkommen, dass Programme mit der Zeit wachsen u. mal dort mal da, ein Feature dazukommt ohne immer gleich alles Umzuschreiben. Es soll auch vorkommen, dass dazu die Zeit fehlt bzw. nicht gegeben wird.

Dass ich die Procedure auch von Hand neu formatieren kann bez. Einrückungen, das war hier nicht das Thema. Ich erkläre es Dir aber gerne noch einmal. Ich suche einen Formatierer für MS-SQL Server Stored Procedures, Functions, Triggers, ..., allerdings keine Online Version. Ich kann nicht eben mal die Internet Verbindung kappen, wenn ich gerade mittels RDC auf dem PC eines Kunden bin.

Ziel des Threads ist/war es, solch einen zu finden, offensichtlich gibt es anscheinend wirklich keinen der das perfekt kann. Es war nicht das Ziel andere Leute zu zwingen, nun auch einen SQL-Formatierer zu verwenden. Insofern verstehe ich nicht, was Dein Post hier soll.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#18

Re: Source Code Formatter für SQL gesucht

  Alt 26. Nov 2006, 17:56
Zitat von guidomarcel:
Hallo,
Ich wäre im übrigen sehr dankbar für Formatierungsvorschläge, vor allem bei den Stored Procedures.
Dann möchte ich mal meinen Wunschzettel abgeben

SQL-Code:
CREATE PROCEDURE PROC_123
   @ID_AgentGroups UNIQUEIDENTIFIER
  ,@ID_AddressPool UNIQUEIDENTIFIER
  ,@Egal BIT
AS
BEGIN
---------------------------------------------------------------------------------------
/*
Prozedur Beschreibung und
Copyright
*/

---------------------------------------------------------------------------------------

  -- einzeilige Kommentare beginnen über dem ersten Zeichen des 1. Wortes der Folgezeile
  -- wenn in der selben Zeile kein SQL Code steht
  SELECT a FROM b -- oder 4-8 Tabs hinter dem SQL-Code

/*
mehrzeilige Kommentare beginnen am Anfang der Zeile
*/


  -- lokale Variablen
  DECLARE @ABC INT -- keine Zeerzeilen zwischen 2 Deklarationen
  DECLARE @BCD VARCHAR(10) -- eine Zeerzeile nach der letzten Deklarationen

  -- Definitionen
  SET NOCOUNT ON -- eine Leerzeile nach jedem syntaktischen Block
                                   -- (SET ; SELECT ; INSERT ; UPDATE usw)

  -- Daten sammelm
  SELECT
    A.ABC
   ,B.BCD
   ,B.CDE
   ,A.DEF
   ,B.EFG
  INTO #aTempTable
  FROM
    aTable A
    INNER JOIN
      (
        SELECT
          B AS BCD
         ,C AS CDE
         ,EFG,
         ,DEF
        FROM
          SonstWo

        UNION ALL -- UNION (ALL) durch Leerzeilen getrennt

        SELECT -- Mehrspaltiger (Sub-)SELECT mit Umbruch
          B AS BCD
         ,C AS CDE
         ,EFG,
         ,DEF
        FROM
          NochWoanders
        WHERE
          EFG IN
            (
              SELECT E FROM eTable -- einspaltiger (Sub-)Select ohne Umburch
            )
          AND
          EFG IS NOT NULL
          OR
          ID < 10000
      ) B
    ON B.DEF = A.DEF -- nach ON 2 Leerzeichen, damit AND ordentlich
    AND B.BCD IS NOT NULL -- darunter passt

  SET NOCOUNT ON

  INSERT INTO abcTable -- ein INSERT INTO SELECT Block, also keine Leerzeile
  SELECT * FROM #aTempTable

  SELECT * FROM #aTempTable

END
berechnete Felder hätte ich gerne so formattiert:
(bitte keine Kritik zu dem Beispiel-SQL-Code, ich kenne die ISNULL Funktion )

SQL-Code:
SELECT
    CASE
        WHEN dbo.SYS_Agents.Vorname IS NOT NULL
        THEN dbo.SYS_Agents.Vorname
        ELSE 'Agent gelöscht'
    END AS Vorname
    ,
    CASE
        WHEN dbo.SYS_Agents.Nachname IS NOT NULL
        THEN dbo.SYS_Agents.Nachname
        ELSE 'Agent gelöscht'
    END AS Nachname
    ,
    CASE
        WHEN dbo.SYS_Agents.Fullname IS NOT NULL
        THEN dbo.SYS_Agents.Fullname
        ELSE 'Agent gelöscht'
    END AS Fullname
    ,
    usw.


Schöne Grüße,
Jens
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Source Code Formatter für SQL gesucht

  Alt 26. Nov 2006, 19:24
Hi Jens, ich würde das gaaaaaaaaaaaannz anders machen, und deshalb wird es den perfekten SQL-Formatter nicht geben. Aber ich glaube, Guenter würde auch einer reichen, der es irgendwie ordendlich hinbekommt.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
guidomarcel

Registriert seit: 25. Nov 2006
2 Beiträge
 
#20

Re: Source Code Formatter für SQL gesucht

  Alt 26. Nov 2006, 21:07
Zitat:
Dann möchte ich mal meinen Wunschzettel abgeben
Hallo Jens,
vielen Dank für die Beispiele. Ich werde mal versuchen, diese Regeln einzubauen. Die SQL Statements müßten teilweise schon so formatiert werden, wie Du das vorschlägst, aber bei den Stored Procedures hapert es noch, da ich mich bisher auf ORACLE und DB2 konzentriert habe.

SQL-Code:
------------------------------------------
-- This is an example SQL
------------------------------------------
 SELECT price.c1 AS c1,
        price.c2 AS c2 ,
        price.c3 AS c3,
        max(price.c4) AS c4,
        max(price.c5) AS c5,
        max(price.c6) AS c6,
        max(price.c7) AS c7
   FROM table_1 t1,
        table_2 t2
  WHERE c1 = c2
    AND c_1 = small_c
    AND c_3411 <= c_12_sup
    AND c1 = 'Test Run
    AND c_4532 = c1.dert
  UNION
 SELECT price.c1 AS c1,
        price.c2 AS c2 ,
        price.c3 AS c3,
        max(price.c4) AS c4,
        max(price.c5) AS c5,
        max(price.c6) AS c6,
        /*******************   
        * This is a block  *   
        * comment within a *   
        * SQL statement    *   
        *******************/
 
        max(price.c7) AS c7
   FROM
        (SELECT store.c1,
                cast (store.c2 AS integer) AS c2, -- inline comment
                store.cwe34r3 AS c3, -- inline comment
                store.c4_prod AS c4, -- inline comment
                store.c5_pre_prod_first AS c5 , -- inline comment
                substr(store.c6,11,1) AS c6, -- inline comment
                store.c7 AS c7 -- inline comment
           FROM
                (SELECT lib.c1,
                        ---------------------
                        -- This is a line --
                        -- comment in a --
                        -- SQL statement --
                        ---------------------
                        lib.c2,
                        lib.c3 -- inline comment
                        ,
                        CASE lib.c4
                                WHEN cheap
                                THEN digits(lib.c27) concat lib.c28
                                ELSE 123456
                        END AS c4,
                        CASE lib.c5
                                WHEN expensive
                                THEN digits(lib.c27) concat lib.c28
                                ELSE 123456
                        END AS lib.c6,
                        CASE c7
                                WHEN free
                                THEN digits(lib.c27) concat lib.c28
                                ELSE 123456
                        END AS c7,
                   FROM
                        (SELECT integer(substr(onelibsales.c1,11,10)) AS c1,
                                substr(onelibsales.c2,21,10) AS c2 ,
                                onelibsales.c3,
                                onelibsales.c4,
                                substr(onelibsales.c5,31,6) AS c5,
                                substr(onelibsales.c6,37,2) AS c6,
                                substr(onelibsales.c7,39,6) AS c7,
                           FROM
                                (SELECT libs.c1,
                                        libs.c2,
                                        max(libs.c3) AS libs.c3 ,
                                        max(char(libs.c4,iso) ) AS c5
                                   FROM
                                        (SELECT tv.c1,
                                                tv.c2,
                                                max(digits(tv.c3)) AS libmax
                                           FROM db1.v_table1 tv
                                          WHERE tv.c1 <> 'Y
                                            AND tv.c1 in ( 'a' , '1' , '12' )
                                            AND tv.c2 >= date(tv.c4)
                                            AND tv.c3 < date(tv.c15)
                                       GROUP BY tv.c1,
                                                tv.c2
                                        ) AS libprod,
                                        db1.table2 th
                               GROUP BY libs.c1,
                                        libs.c2
                                ) AS onelibsales
                        ) AS lib
                LEFT OUTER JOIN db1.v_table3 libstat
                     ON libstat.c1 = lib.c1
                    AND libstat.c2 = lib.c2
                     OR ( libstat.c4 = lib.c4
                    AND libstat.c5 = lib.c5 )
                        /*******************
                        * This is a block  *
                        * comment within a *
                        * SQL statement    *
                        *******************/
 
                    AND ( libstat.c5 = 'I
                     OR libstat.c4 = 'Gold
                     OR libstat.c5 = 'Bold' )
                    AND libstat.c6 <= 'Z74
                ) AS x
        ) AS price
  WHERE price.c1 < 'R45
     OR ( price.c2= 'R46
        /******************* 
        * This is a block  * 
        * comment within a * 
        * SQL statement    * 
        *******************/
 
    AND price.c3 = 6 )
GROUP BY price.c1,
        price.c2,
        /******************* 
        * This is a block  * 
        * comment within a * 
        * SQL statement    * 
        *******************/
 
        price.c3,
        price.c4,
        price.c5,
        price.c6,
        price.c7

Grüße
GuidoMarcel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:08 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