DSQLT (Dynamische SQL Templates) ist eine in T-SQL programmierte Erweiterungsbibliothek für MS SQL Server 2005/2008.
Sie bietet vor allem folgende Möglichkeiten:
Parameterersetzung (z.B. für SQL-Objekte) in gespeicherten Prozeduren.
• Codegenerierung
• Einfach verwendbare Schemainformationen

Die Parameterersetzung kann in gespeicherten Prozeduren die Parameter @0-@9 durch beliebige Inhalte ersetzen und somit aus statischem SQL wiederverwendbare Templates erschaffen.
Mit der eingebauten Iteration über ein Cursor Resultset ist DSQLT ein mächtiges Werkzeug zur massenhaften Generierung von T-SQL Code oder auch zur einfachen und weniger fehlerträchtigen Ausführung von dynamischem SQL.

Ein DSQLT-Template ist eine einfache gespeicherte Prozedur, die ein paar wenigen Konventionen genügen muss.
• Der Name beginnt mit einem @-Zeichen, um sie von normalen gespeicherten Prozeduren abzugrenzen.
• Der äußerste BEGIN/END Block umschließt das eigentliche Template
• Innerhalb des Templates können die Parameter @0-@9 durch beliebige Inhalte (meistens Objektnamen oder Teile der Syntax eines SQL-Befehls, z.B. eine Liste von Spalten) ersetzt werden.

Ein typisches Beispiel:

CREATE PROCEDURE [Sample].[@CopyTableFrom] 

AS RETURN -- schützt Template vor versehentlichem Aufruf

BEGIN

TRUNCATE TABLE [@1].[@2]

INSERT INTO [@1].[@2]

SELECT * FROM [@3].[@1].[@2]


END
  • Aufruf für eine Tabelle
EXEC DSQLT.[Execute] '[Sample].[@CopyTableFrom]','Sales','Customer','Adventureworks'
  • Für viele Tabellen, z.B. alle Tabellen aus dem Schema Sales
DECLARE @Cursor CURSOR ; SET @Cursor= CURSOR LOCAL STATIC FOR 
SELECT [Schema],[Table] FROM DSQLT.Tables('Sales.%') 
EXEC DSQLT.Iterate '[Sample].[@CopyTableFrom]',@Cursor,'Adventureworks'

[Aufrufen von Templates]

Last edited Feb 24, 2011 at 3:28 PM by HenrikBauer, version 9

Comments

No comments yet.