![]() |
Source Code Formatter für SQL gesucht
Hallo,
ich hoffe ich liege nicht ganz daneben, wenn ich diese Frage in diesem Teil des Forums poste. Ich suche einen möglichst freien, formatierer für SQL. |
Re: Source Code Formatter für SQL gesucht
Ich kenn noch nichtmal irgendwelche Styleguides, wie man SQL formatieren sollte. Ich mach es auch mal so - mal so.
|
Re: Source Code Formatter für SQL gesucht
Bei einem simplen Select Statement braucht man das auch nicht umbedingt, aber wenn Du eine 3 bis 4 Seiten lange Stored Procedure hast, wäre eine "richtig" eingerückte Formatierung recht hilfreich um gleich zu sehen, wo man sich befindet.
|
Re: Source Code Formatter für SQL gesucht
Ich rede von 3-4 Seiten langen SELECT's... Nee, nicht ganz...
Für welchen SQL-Dialekt soll das sein? Das Blöde ist doch, das jeder Server seinen eigenen Dialekt hat und Du einen Formatter für jeden Dialekt benötigen würdest. Eventuell haben die guten Admin-Tools sowas dabei, aber ein googel nach "SQL Formatter" ergab schon mal genügend Quellen... |
Re: Source Code Formatter für SQL gesucht
Zitat:
Hm, hättest ja eine einzige der so vielen Quellen posten können.... Was man massenhaft findet, sind Online SQL Formatierer, ich möchte aber ungern, die Stored Procedures und Functions einem Online tool anvertrauen. Suche es jedenfalls für MS Sql Server. Es gibt doch auch für Programmiersprachen Source Code formatter, obwohl die Dialekte C++, C, Pascal, C#, Java, ... alle etwas unterschiedlich sind. |
Re: Source Code Formatter für SQL gesucht
Mein liebstes Datenbanktool enthält auch einen SQL Code-Beautifier:
![]() Vielleicht ist es ja was für Dich. |
Re: Source Code Formatter für SQL gesucht
@Günter: Ich habe Stored Procedures bisher eher durch ausführliche Kommentierung lesbar gestaltet nd werde diese Praxis beibehalten. Wenn ich einen Formatter (oder Beautifier o.ä.) hätte, würde ich mir das abgewöhnen :zwinker: .
@RWachtel: Wow! |
Re: Source Code Formatter für SQL gesucht
Zitat:
Leider hat unser Query Analyzer und manch TextEditor eingefüge Leerzeichen und Tabs anders darzustellen und wirft somit die entsprechenden Einrückungen durcheinander. Auch müsste man ohne tool bei einem eingeführten If Block, alle darin enthaltenen Statements wieder manuell einrücken. Da kann ein SQL-Formatier-Programm schon helfen. Kommentare ersetzen kann es nicht (wie auch kein anderer Source Code Formatierer) Ich werd mir das Aqua studio mal ansehen. |
Re: Source Code Formatter für SQL gesucht
Zitat:
Damit sehen auch Packages mit zig Methoden noch schnieke aus, aber zaubern kann er ja auch nicht. (@TSQL) |
Re: Source Code Formatter für SQL gesucht
Hier ist ein kostenloser Online-Codeformatter.
Ich finde das Teil recht gut. ![]() |
Re: Source Code Formatter für SQL gesucht
Zitat:
Zitat:
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. |
Re: Source Code Formatter für SQL gesucht
Zitat:
Ich glaube, es ging darum, dass der Einsatz eines entsprechenden Tools Kommentare nicht überflüssig macht... ;) |
Re: Source Code Formatter für SQL gesucht
Zitat:
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. |
Re: Source Code Formatter für SQL gesucht
Hab mir eben Aqua-Data-Studio angeschaut. Ganz nett, aber so richtig klappt das mit dem Formatieren auch nicht:
Aus
SQL-Code:
wird
ALTER PROCEDURE [dbo].[DeleteAllCustomers]
@bla int AS IF @bla=1287 BEGIN SELECT * FROM Customer; END GO
SQL-Code:
:shock: Ahh.... Ja :gruebel:
ALTER PROCEDURE [dbo].[DeleteAllCustomers]
@bla INT AS IF @bla=1287 BEGIN SELECT * FROM Customer; END GO 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... |
Re: Source Code Formatter für SQL gesucht
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 ![]() |
Re: Source Code Formatter für SQL gesucht
Ist das Thema immer noch nicht gegessen ? :shock: 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. :mrgreen: 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. |
Re: Source Code Formatter für SQL gesucht
Zitat:
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. |
Re: Source Code Formatter für SQL gesucht
Zitat:
SQL-Code:
berechnete Felder hätte ich gerne so formattiert:
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 (bitte keine Kritik zu dem Beispiel-SQL-Code, ich kenne die ISNULL Funktion :mrgreen: )
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 :hi: |
Re: Source Code Formatter für SQL gesucht
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.
|
Re: Source Code Formatter für SQL gesucht
Zitat:
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 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