top of page

Tool TSQL Text-Formatter - Tool sp_executesql

(alle Versionen/all versions)

Donnerstag, 25. Mai 2023

Hintergrund/Background

Beispiel/Example

SQL-Text aus MS-SQL-Profiler

Ergebnis/Result

Download Tool

Download Tool Source



Hintergrund/Background


Um SQL-Texte schnell formatieren zu können, haben wir ein simples .net-XCOPY-Tool erstellt, welches auf den kostenlosen Open Source Projekt https://poorsql.com/ basiert.

Das hier vorgestellte EXE-Tool wurde ergänzt um eine spezielle sehr nützliche Funktion, mit der sich der SQL-Befehl “sp_executesql“ - den man oft im SQL-Profiler findet - auf besondere Weise formatieren lässt.

Das Tool erkennt konkret das Vorkommen von "sp_executesql" im Text und analyiert den SQL-Text entsprechend.

Bei Vorkommen von "sp_executesql" im Text, werden die Variablen-Deklarationen und Zuweisungen in eine sinnvolle Weise vor der Ausführung der eigentlichen relevanten SQL vorangestellt.

Das Ergebnis wird dann wie mit https://poorsql.com/ bekannt optisch aufbereitet, so dass der SQL-Text leserlicher wird.

Natürlich spricht nichts dagegen, das XCOPY-Tool auch einfach nur zum schnellen Formatieren von SQL-Texten zu verwenden.


In order to be able to format SQL texts quickly, we have created a simple .net XCOPY tool based on the free, open-source project https://poorsql.com/.

The EXE tool presented here has been supplemented with a special, very useful function for the SQL command "sp_executesql" - which is often found in the SQL profiler. With this tool any "sp_executesql" command can be formatted in a special way.

Specifically, the tool detects the occurrence of "sp_executesql" in the text and parses the SQL text accordingly.

If "sp_executesql" exists in the text, the variable declarations and assignments are put in a meaningful way before the relevant SQL text.

The result is then optically prepared as known from https://poorsql.com/ so that the SQL text becomes more legible.

Of course, the XCOPY tool can also be simply used to quickly format SQL texts.


Beispiel/Example

Kontext/Context: Sage 100.


SQL-Text aus MS-SQL-Profiler

exec sp_executesql N'INSERT INTO KHKAdressen (KHKAdressen.Adresse, KHKAdressen.Kategorie, KHKAdressen.Matchcode, KHKAdressen.Anrede, KHKAdressen.Name1, KHKAdressen.Name2, KHKAdressen.LieferZusatz, KHKAdressen.LieferStrasse, KHKAdressen.LieferLand, KHKAdressen.LieferPLZ, KHKAdressen.LieferOrt, KHKAdressen.PostZusatz, KHKAdressen.PostStrasse, KHKAdressen.PostLand, KHKAdressen.PostPLZ, KHKAdressen.PostOrt, KHKAdressen.Ansprache, KHKAdressen.Telefon, KHKAdressen.Telefax, KHKAdressen.Mobilfunk, KHKAdressen.EMail, KHKAdressen.Homepage, KHKAdressen.Memo, KHKAdressen.Sprache, KHKAdressen.Erstkontakt, KHKAdressen.Gruppe, KHKAdressen.A1Besteuerung, KHKAdressen.Auswertungskennzeichen, KHKAdressen.Referenz, KHKAdressen.Aktiv, KHKAdressen.Sonderfunktion, KHKAdressen.Mandant) VALUES (@Adresse, @Kategorie, @Matchcode, @Anrede, @Name1, @Name2, @LieferZusatz, @LieferStrasse, @LieferLand, @LieferPLZ, @LieferOrt, @PostZusatz, @PostStrasse, @PostLand, @PostPLZ, @PostOrt, @Ansprache, @Telefon, @Telefax, @Mobilfunk, @EMail, @Homepage, @Memo, @Sprache, @Erstkontakt, @Gruppe, 
@A1Besteuerung, @Auswertungskennzeichen, @Referenz, @Aktiv, @Sonderfunktion, @MandantFieldTable1)',N'@Adresse varchar(2),@Kategorie int,@Matchcode varchar(15),@Anrede varchar(5),@Name1 varchar(10),@Name2 varchar(12),@LieferZusatz varchar(6),@LieferStrasse varchar(15),@LieferLand varchar(2),@LieferPLZ varchar(6),@LieferOrt varchar(3),@PostZusatz varchar(23),@PostStrasse varchar(23),@PostLand varchar(2),@PostPLZ varchar(6),@PostOrt varchar(8),@Ansprache varchar(11),@Telefon varchar(3),@Telefax varchar(3),@Mobilfunk varchar(5),@EMail varchar(12),@Homepage varchar(15),@Memo varchar(4),@Sprache varchar(1),@Erstkontakt datetime,@Gruppe varchar(2),@A1Besteuerung smallint,@Auswertungskennzeichen varchar(2),@Referenz varchar(14),@Aktiv int,@Sonderfunktion int,@RowVersionFieldTable1 varchar(8000),@MandantFieldTable1 int,@Table1 varchar(8000)',@Adresse='78',@Kategorie=0,@Matchcode='SAG Test 1, Ort',@Anrede='Firma',@Name1='SAG Test 1',@Name2='Namenszusatz',@LieferZusatz='Zusatz',@LieferStrasse='Straße/Postfach',@LieferLand='DE',@LieferPLZ='123456',@LieferOrt='Ort',@PostZusatz='Abw. Anschrift - Zusatz',@PostStrasse='Abw. Anschrift - Straße',@PostLand='DE',@PostPLZ='789901',@PostOrt='Abw. Ort',@Ansprache='Briefanrede',@Telefon='Tel',@Telefax='Fax',@Mobilfunk='Mobil',@EMail='mail@mail.de',@Homepage='www.homepage.de',@Memo='Memo',@Sprache='D',@Erstkontakt='2023-05-25 00:00:00',@Gruppe='DK',@A1Besteuerung=0,@Auswertungskennzeichen='AF',@Referenz='Adressreferenz',@Aktiv=-1,@Sonderfunktion=0,@RowVersionFieldTable1=NULL,@MandantFieldTable1=123,@Table1=NULL

Ergebnis/Result

DECLARE @Adresse VARCHAR(2)
       ,@Kategorie INT
       ,@Matchcode VARCHAR(15)
       ,@Anrede VARCHAR(5)
       ,@Name1 VARCHAR(10)
       ,@Name2 VARCHAR(12)
       ,@LieferZusatz VARCHAR(6)
       ,@LieferStrasse VARCHAR(15)
       ,@LieferLand VARCHAR(2)
       ,@LieferPLZ VARCHAR(6)
       ,@LieferOrt VARCHAR(3)
       ,@PostZusatz VARCHAR(23)
       ,@PostStrasse VARCHAR(23)
       ,@PostLand VARCHAR(2)
       ,@PostPLZ VARCHAR(6)
       ,@PostOrt VARCHAR(8)
       ,@Ansprache VARCHAR(11)
       ,@Telefon VARCHAR(3)
       ,@Telefax VARCHAR(3)
       ,@Mobilfunk VARCHAR(5)
       ,@EMail VARCHAR(12)
       ,@Homepage VARCHAR(15)
       ,@Memo VARCHAR(4)
       ,@Sprache VARCHAR(1)
       ,@Erstkontakt DATETIME
       ,@Gruppe VARCHAR(2)
       ,@A1Besteuerung SMALLINT
       ,@Auswertungskennzeichen VARCHAR(2)
       ,@Referenz VARCHAR(14)
       ,@Aktiv INT
       ,@Sonderfunktion INT
       ,@RowVersionFieldTable1 VARCHAR(8000)
       ,@MandantFieldTable1 INT
       ,@Table1 VARCHAR(8000)

SET @Adresse = '78'
SET @Kategorie = 0
SET @Matchcode = 'SAG Test 1, Ort'
SET @Anrede = 'Firma'
SET @Name1 = 'SAG Test 1'
SET @Name2 = 'Namenszusatz'
SET @LieferZusatz = 'Zusatz'
SET @LieferStrasse = 'Straße/Postfach'
SET @LieferLand = 'DE'
SET @LieferPLZ = '123456'
SET @LieferOrt = 'Ort'
SET @PostZusatz = 'Abw. Anschrift - Zusatz'
SET @PostStrasse = 'Abw. Anschrift - Straße'
SET @PostLand = 'DE'
SET @PostPLZ = '789901'
SET @PostOrt = 'Abw. Ort'
SET @Ansprache = 'Briefanrede'
SET @Telefon = 'Tel'
SET @Telefax = 'Fax'
SET @Mobilfunk = 'Mobil'
SET @EMail = 'mail@mail.de'
SET @Homepage = 'www.homepage.de'
SET @Memo = 'Memo'
SET @Sprache = 'D'
SET @Erstkontakt = CAST('2023-05-25 00:00:00' AS DATETIME)
SET @Gruppe = 'DK'
SET @A1Besteuerung = 0
SET @Auswertungskennzeichen = 'AF'
SET @Referenz = 'Adressreferenz'
SET @Aktiv = - 1
SET @Sonderfunktion = 0
SET @RowVersionFieldTable1 = NULL
SET @MandantFieldTable1 = 123
SET @Table1 = NULL

INSERT INTO KHKAdressen (
       KHKAdressen.Adresse
       ,KHKAdressen.Kategorie
       ,KHKAdressen.Matchcode
       ,KHKAdressen.Anrede
       ,KHKAdressen.Name1
       ,KHKAdressen.Name2
       ,KHKAdressen.LieferZusatz
       ,KHKAdressen.LieferStrasse
       ,KHKAdressen.LieferLand
       ,KHKAdressen.LieferPLZ
       ,KHKAdressen.LieferOrt
       ,KHKAdressen.PostZusatz
       ,KHKAdressen.PostStrasse
       ,KHKAdressen.PostLand
       ,KHKAdressen.PostPLZ
       ,KHKAdressen.PostOrt
       ,KHKAdressen.Ansprache
       ,KHKAdressen.Telefon
       ,KHKAdressen.Telefax
       ,KHKAdressen.Mobilfunk
       ,KHKAdressen.EMail
       ,KHKAdressen.Homepage
       ,KHKAdressen.Memo
       ,KHKAdressen.Sprache
       ,KHKAdressen.Erstkontakt
       ,KHKAdressen.Gruppe
       ,KHKAdressen.A1Besteuerung
       ,KHKAdressen.Auswertungskennzeichen
       ,KHKAdressen.Referenz
       ,KHKAdressen.Aktiv
       ,KHKAdressen.Sonderfunktion
       ,KHKAdressen.Mandant
       )
VALUES (
       @Adresse
       ,@Kategorie
       ,@Matchcode
       ,@Anrede
       ,@Name1
       ,@Name2
       ,@LieferZusatz
       ,@LieferStrasse
       ,@LieferLand
       ,@LieferPLZ
       ,@LieferOrt
       ,@PostZusatz
       ,@PostStrasse
       ,@PostLand
       ,@PostPLZ
       ,@PostOrt
       ,@Ansprache
       ,@Telefon
       ,@Telefax
       ,@Mobilfunk
       ,@EMail
       ,@Homepage
       ,@Memo
       ,@Sprache
       ,@Erstkontakt
       ,@Gruppe
       ,@A1Besteuerung
       ,@Auswertungskennzeichen
       ,@Referenz
       ,@Aktiv
       ,@Sonderfunktion
       ,@MandantFieldTable1
       )


Download Tool




Download Tool Source



bottom of page