DSQLT.Iterate

Liest den Quelltext eines Templates, ersetzt die Parameter je Cursorzeile mit den Werten der einzelnen Cursorspalten sowie den direkt an DSQLT.Iterate übergebenen Werten und führt den generierten SQL-Code aus.

[DSQLT].[Iterate]
 
@DSQLTProc sysname = null
 
, @Cursor CURSOR VARYING OUTPUT
 
, @p1 NVARCHAR (MAX) = null
 
, @p2…@p8 NVARCHAR (MAX) = null
 
, @p9 NVARCHAR (MAX) = null
 
, @Database sysname = null
 
, @Template NVARCHAR (MAX) = null OUTPUT
 
, @Create sysname = null
 
, @Once bit = 0
 
, @Print bit = 0
 

@DSQLTProc: der Name des Templates.  Dies muss der Name einer Stored Procedure sein, die in einem beliebigen Schema in der aktuellen Datenbank definiert ist. Der Name muss zwingend mit @ beginnen. Wenn anstelle einer Prozedur ein String als Template verwendet werden soll, kann hier null übergeben werden. Dann wird stattdessen der der Inhalt von @Template als Template verwendet.

@Cursor: eine Cursorvariable, die mit LOCAL STATIC definiert sein sollte. Über dessen Ergebnismenge wird iteriert. Je Iteration werden die aktuellen Spalteninhalte in ihrer Reihenfolge für die Parameterersetzung von @1-@9  verwendet.

@p1-@p9: Falls der Cursor weniger als 9 Spalten hat, so werden die restlichen Inhalte für die Parameterersetzung von @1-@9 aus diesen Parametern verwendet.Sie werden in ihrer Reihenfolge zugeordnet. Bei einem Cursor mit 7 Spalten wird beispielsweise @p1 für @8 und @p2 für @9 verwendet.

@Database: In dieser Datenbank wird der generierte SQL-Code ausgeführt werden soll.  null bewirkt die Ausführung in der aktuellen Datenbank.

Auf diesen Namen wird ebenfalls die Parameterersetzung angewendet, falls dieser die  Parameter @0-@9 beinhaltet. 

@Template: Hiermit kann anstelle der Templateprozedur ein String übergeben werden. Dient auch als optionaler Output-Parameter zur Rückgabe des generierten SQL-Codes.

@Create: Der Name zur Generierung einer Stored Procedure. Wird dieser angegeben, so wird der generierte Code mit einem passenden Prozedurrumpf umfasst.

Auf diesen Namen wird ebenfalls die Parameterersetzung angewendet, falls dieser die  Parameter @0-@9 beinhaltet. Falls eine gleichnamige Prozedur bereits besteht, wird diese ersetzt. dadurch kann auch eine Menge an Stored Procedures erzeugt werden.

@Once: Bei @Once =0 wird je Zeile des Rowsets eine Stored Procedure erzeugt. Bei @Once =1 wird der gesamte erzeugte SQL-Code zu einer Stored Procedure zusammengefasst.

@Print: steuert, ob der generierte Code ausgeführt (0) oder gedruckt (1) werden soll. Null bewirkt, dass weder das eine noch das andere geschieht, sondern stattdessen der generierte Code an @Template zurückgegeben wird. Dadurch können Sie den generierten Code beliebig weiterverwenden.

Last edited Jan 20, 2011 at 10:08 PM by HenrikBauer, version 1

Comments

No comments yet.