    *        kann optional ein Parameter P_DELIMITER als Trennzeichen zwischen den
    *        einzelnen Zeilen uebergeben werden.
    */
-  PROCEDURE generate_text(p_template  IN VARCHAR2,
-                          p_stmt      IN CLOB,
-                          p_result    OUT VARCHAR2,
-                          p_delimiter IN VARCHAR2 DEFAULT NULL);
+  procedure generate_text(p_template  in varchar2,
+                          p_stmt      in clob,
+                          p_result    out varchar2,
+                          p_delimiter in varchar2 default null,
+                          p_indent    in number default 0);
+                          
+
+  /* Prozedur zur Generierung von Texten basierend auf einem dynamischen Template
+  * %param SQL-Anweisung mit einer Spalte pro Ersetzungsanker. Nicht auf eine Zeile limitiert.
+  *                 Diese Ueberladung erwartet das Template, in das die Anker
+  *                 eingefuegt werden sollen, als erste Spalte
+  * %param p_result Ergebnis der Umwandlung
+  * %param p_delimiter Abschlusszeichen, das zwischen die einzelnen Instanzen der
+  *        aufbereiteten Templates gestellt wird
+  * %usage Wird verwendet, um direkt aus einer SQL-Anweisung und einem Template
+  *        einen Ergebnistext zu erzeugen. Umfasst die SQL-Anweisung mehrere Zeilen,
+  *        kann optional ein Parameter P_DELIMITER als Trennzeichen zwischen den
+  *        einzelnen Zeilen uebergeben werden.
+  *        Da kein Template uebergeben wird, erwartet diese Ueberladung das 
+  *        Template als erste Spalte der SQL-Anweisung. Die SQL-Anweisung muss
+  *        alle Ersetzungsanker in allen uebergebenen Templates fuellen koennen.
+  */
+  procedure generate_text(p_stmt      in clob,
+                          p_result    out clob,
+                          p_delimiter in varchar2 default null,
+                          p_indent    in number default 0);
+
+  procedure generate_text(p_stmt      in clob,
+                          p_result    out dbms_sql.clob_table,
+                          p_delimiter in varchar2 default null,
+                          p_indent    in number default 0);
+
+  function generate_text(p_stmt      in clob,
+                         p_delimiter in varchar2 default null,
+                         p_indent    in number default 0) return clob;
+                          
+
+  /* Prozedur zur Generierung von Texten basierend auf einem dynamischen Template
+  * %param p_cursor Geoffneter Cursor mit einer oder mehreren Ergebniszeilen,
+  *                 Diese Ueberladung erwartet das Template, in das die Anker
+  *                 eingefuegt werden sollen, als erste Spalte
+  * %param p_result Ergebnis der Umwandlung
+  * %param p_delimiter Abschlusszeichen, das zwischen die einzelnen Instanzen der
+  *        aufbereiteten Templates gestellt wird
+  * %usage Wird verwendet, um direkt aus einer SQL-Anweisung und einem Template
+  *        einen Ergebnistext zu erzeugen. Umfasst die SQL-Anweisung mehrere Zeilen,
+  *        kann optional ein Parameter P_DELIMITER als Trennzeichen zwischen den
+  *        einzelnen Zeilen uebergeben werden.
+  *        Da kein Template uebergeben wird, erwartet diese Ueberladung das 
+  *        Template als erste Spalte der SQL-Anweisung. Die SQL-Anweisung muss
+  *        alle Ersetzungsanker in allen uebergebenen Templates fuellen koennen.
+  */
+  procedure generate_text(p_cursor    in out nocopy sys_refcursor,
+                          p_result    out varchar2,
+                          p_delimiter in varchar2 default null,
+                          p_indent    in number default 0);
+                          
 
   /* Prozedur zum direkten Ersetzen von Zeichenfolgen in einem Template durch die 
   * Ergebnisse der SQL-Abfrage
   * %param p_template Template mit Ersetzungsankern. Syntax der Ersetzungsanker:
   *        #<Name des Ersetzungsankers, muss Tabellenspalte entsprechen>
-  *        |<Pr�fix, falls Wert not null>
+  *        |<Praefix, falls Wert not null>
   *        |<Postfix, falls Wert not null>
   *        |<Wert, falls NULL>#
   *        Alle PIPE-Zeichen und Klauseln sind optional, muessen aber, wenn sie 

CREATE OR REPLACE PACKAGE dwh_frame.code_generator AS

  /* DATENTYPEN */
  TYPE key_value_tab IS TABLE OF CLOB INDEX BY VARCHAR2(30);
  TYPE row_tab IS TABLE OF key_value_tab INDEX BY BINARY_INTEGER;
  
  
  /* Set-Methode zum Einstellen, ob fehlende Ersetzungsanker zu einem Fehler 
   * fuehren sollen oder nicht.
   * %param p_flag Flag, das steuert, ob im Fall fehlender Anker ein Fehler geworfen
   *        werden soll (FALSE) oder nicht (TRUE). Standard ist TRUE.
   */
  PROCEDURE set_ignore_missing_anchors(p_flag IN BOOLEAN);

  /* Get-Methode, die den aktuellen Stand des Flags IGNORE_MISSING_ANCHORS zurueckgibt.
   */
  FUNCTION get_ignore_missing_anchors RETURN BOOLEAN;
  
  
  /* Set-Methode stellt das Default-Datumsformat ein, das verwendet wird, 

   * Standardformat ist DD.MM.YYYY HH24:MI:SS
   * %param p_format Formatmaske
   */
  procedure set_default_date_format(p_format in varchar2);

  /* Get-Methode, die den aktuellen Wert des Standard-Datumsformats zurueckgibt
   */
  function get_default_date_format return varchar2;
  
  
  /* Set Methode stellt das Hauptersetzungszeichen ein
