From 60e18f74aec91eb4b4cdfd68a3cf69a465e841f0 Mon Sep 17 00:00:00 2001 From: admManuel Date: Sun, 20 Oct 2024 18:16:31 +0000 Subject: [PATCH] Update sql-struktur.sql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit usersettings hinzugefügt und stammdaten verworfen, wird mit javascript erstellt --- sql-struktur.sql | 388 ++++++++++++----------------------------------- 1 file changed, 93 insertions(+), 295 deletions(-) diff --git a/sql-struktur.sql b/sql-struktur.sql index fb97aa3..68bc862 100644 --- a/sql-struktur.sql +++ b/sql-struktur.sql @@ -18,252 +18,130 @@ INSERT INTO @TableSuffixes (Suffix) VALUES ('dusche'), ('waschbecken'), ('allgemein'), - ('stammdaten'); -- Neue Tabelle ohne engomoid + ('usersettings'); -- Deklariere eine Tabellenvariable mit den Spalteninformationen DECLARE @ColumnsToAdd TABLE ( TableName NVARCHAR(128), - ColumnName NVARCHAR(128), - ColumnType NVARCHAR(128) + ColumnName NVARCHAR(128) ); -- Füge die gewünschten Spalten hinzu, einschließlich begehung_stammdaten ohne engomoid -INSERT INTO @ColumnsToAdd (TableName, ColumnName, ColumnType) VALUES +INSERT INTO @ColumnsToAdd (TableName, ColumnName) VALUES -- begehung_extras - (@TablePrefix + 'extras', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'extras', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'extras', 'handtuchheizkoerper', 'BIT'), - (@TablePrefix + 'extras', 'badetuchhalter', 'BIT'), - (@TablePrefix + 'extras', 'waschmaschinenanschluss', 'BIT'), - (@TablePrefix + 'extras', 'notizen', 'TEXT'), + (@TablePrefix + 'extras', 'engomoid'), + (@TablePrefix + 'extras', 'raum_bezeichnung'), + (@TablePrefix + 'extras', 'handtuchheizkoerper'), + (@TablePrefix + 'extras', 'badetuchhalter'), + (@TablePrefix + 'extras', 'waschmaschinenanschluss'), + (@TablePrefix + 'extras', 'notizen'), -- begehung_raeume - (@TablePrefix + 'raeume', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'raeume', 'raumid', 'VARCHAR(255)'), - (@TablePrefix + 'raeume', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'raeume', 'tapezieren', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_tuerblatt', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_tuerrahmen', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_tuerblatt_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'anstrich_heizkoerper', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_heizkoerper_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'anstrich_decke', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_decke_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'anstrich_waende', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_waende_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'anstrich_fenster', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_fenster_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'anstrich_fenstersims', 'BIT'), - (@TablePrefix + 'raeume', 'anstrich_fenstersims_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'material_fenster', 'VARCHAR(255)'), - (@TablePrefix + 'raeume', 'material_fenstersims', 'VARCHAR(255)'), - (@TablePrefix + 'raeume', 'material_bodenbelag', 'VARCHAR(255)'), - (@TablePrefix + 'raeume', 'sonstiges_einbauschrank', 'BIT'), - (@TablePrefix + 'raeume', 'sonstiges_einbauschrank_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'sonstiges_luefter', 'BIT'), - (@TablePrefix + 'raeume', 'sonstiges_luefter_notizen', 'TEXT'), - (@TablePrefix + 'raeume', 'notizen_verursachung_mieter', 'TEXT'), - (@TablePrefix + 'raeume', 'notizen_instandsetzung_mieter', 'TEXT'), - (@TablePrefix + 'raeume', 'notizen_instandsetzung_vermieter', 'TEXT'), + (@TablePrefix + 'raeume', 'engomoid'), + (@TablePrefix + 'raeume', 'raumid'), + (@TablePrefix + 'raeume', 'raum_bezeichnung'), + (@TablePrefix + 'raeume', 'tapezieren'), + (@TablePrefix + 'raeume', 'anstrich_tuerblatt'), + (@TablePrefix + 'raeume', 'anstrich_tuerrahmen'), + (@TablePrefix + 'raeume', 'anstrich_tuerblatt_notizen'), + (@TablePrefix + 'raeume', 'anstrich_heizkoerper'), + (@TablePrefix + 'raeume', 'anstrich_heizkoerper_notizen'), + (@TablePrefix + 'raeume', 'anstrich_decke'), + (@TablePrefix + 'raeume', 'anstrich_decke_notizen'), + (@TablePrefix + 'raeume', 'anstrich_waende'), + (@TablePrefix + 'raeume', 'anstrich_waende_notizen'), + (@TablePrefix + 'raeume', 'anstrich_fenster'), + (@TablePrefix + 'raeume', 'anstrich_fenster_notizen'), + (@TablePrefix + 'raeume', 'anstrich_fenstersims'), + (@TablePrefix + 'raeume', 'anstrich_fenstersims_notizen'), + (@TablePrefix + 'raeume', 'material_fenster'), + (@TablePrefix + 'raeume', 'material_fenstersims'), + (@TablePrefix + 'raeume', 'material_bodenbelag'), + (@TablePrefix + 'raeume', 'sonstiges_einbauschrank'), + (@TablePrefix + 'raeume', 'sonstiges_einbauschrank_notizen'), + (@TablePrefix + 'raeume', 'sonstiges_luefter'), + (@TablePrefix + 'raeume', 'sonstiges_luefter_notizen'), + (@TablePrefix + 'raeume', 'notizen_verursachung_mieter'), + (@TablePrefix + 'raeume', 'notizen_instandsetzung_mieter'), + (@TablePrefix + 'raeume', 'notizen_instandsetzung_vermieter'), -- begehung_badewanne - (@TablePrefix + 'badewanne', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'badewanne', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'badewanne', 'ablauf_mit_stoepsel', 'BIT'), - (@TablePrefix + 'badewanne', 'excenter_garnitur', 'BIT'), - (@TablePrefix + 'badewanne', 'griff', 'BIT'), - (@TablePrefix + 'badewanne', 'handbrause_mit_schlauch', 'BIT'), + (@TablePrefix + 'badewanne', 'engomoid'), + (@TablePrefix + 'badewanne', 'raum_bezeichnung'), + (@TablePrefix + 'badewanne', 'ablauf_mit_stoepsel'), + (@TablePrefix + 'badewanne', 'excenter_garnitur'), + (@TablePrefix + 'badewanne', 'griff'), + (@TablePrefix + 'badewanne', 'handbrause_mit_schlauch'), -- begehung_dusche - (@TablePrefix + 'dusche', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'dusche', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'dusche', 'ablagekorb', 'BIT'), - (@TablePrefix + 'dusche', 'duschabtrennung', 'BIT'), - (@TablePrefix + 'dusche', 'duschkabine', 'BIT'), - (@TablePrefix + 'dusche', 'duschstange', 'BIT'), - (@TablePrefix + 'dusche', 'duschstange_mit_seifenschale', 'BIT'), - (@TablePrefix + 'dusche', 'dusche_bodengleich', 'BIT'), - (@TablePrefix + 'dusche', 'duschtasse', 'BIT'), - (@TablePrefix + 'dusche', 'handbrause_mit_schlauch', 'BIT'), + (@TablePrefix + 'dusche', 'engomoid'), + (@TablePrefix + 'dusche', 'raum_bezeichnung'), + (@TablePrefix + 'dusche', 'ablagekorb'), + (@TablePrefix + 'dusche', 'duschabtrennung'), + (@TablePrefix + 'dusche', 'duschkabine'), + (@TablePrefix + 'dusche', 'duschstange'), + (@TablePrefix + 'dusche', 'duschstange_mit_seifenschale'), + (@TablePrefix + 'dusche', 'dusche_bodengleich'), + (@TablePrefix + 'dusche', 'duschtasse'), + (@TablePrefix + 'dusche', 'handbrause_mit_schlauch'), -- begehung_waschbecken - (@TablePrefix + 'waschbecken', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'waschbecken', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'waschbecken', 'ablauf_mit_stoepsel', 'BIT'), - (@TablePrefix + 'waschbecken', 'doppelhandtuchhalter', 'BIT'), - (@TablePrefix + 'waschbecken', 'doppelwaschbecken', 'BIT'), - (@TablePrefix + 'waschbecken', 'doppelwaschtisch', 'BIT'), - (@TablePrefix + 'waschbecken', 'excenter_garnitur', 'BIT'), - (@TablePrefix + 'waschbecken', 'handtuchhalter', 'BIT'), - (@TablePrefix + 'waschbecken', 'handtuchhaken', 'BIT'), - (@TablePrefix + 'waschbecken', 'konsole', 'BIT'), - (@TablePrefix + 'waschbecken', 'seifenschale', 'BIT'), - (@TablePrefix + 'waschbecken', 'spiegelleuchte', 'BIT'), - (@TablePrefix + 'waschbecken', 'waschbecken', 'BIT'), + (@TablePrefix + 'waschbecken', 'engomoid'), + (@TablePrefix + 'waschbecken', 'raum_bezeichnung'), + (@TablePrefix + 'waschbecken', 'ablauf_mit_stoepsel'), + (@TablePrefix + 'waschbecken', 'doppelhandtuchhalter'), + (@TablePrefix + 'waschbecken', 'doppelwaschbecken'), + (@TablePrefix + 'waschbecken', 'doppelwaschtisch'), + (@TablePrefix + 'waschbecken', 'excenter_garnitur'), + (@TablePrefix + 'waschbecken', 'handtuchhalter'), + (@TablePrefix + 'waschbecken', 'handtuchhaken'), + (@TablePrefix + 'waschbecken', 'konsole'), + (@TablePrefix + 'waschbecken', 'seifenschale'), + (@TablePrefix + 'waschbecken', 'spiegelleuchte'), + (@TablePrefix + 'waschbecken', 'waschbecken'), -- begehung_toilette - (@TablePrefix + 'toilette', 'engomoid', 'BIGINT NOT NULL'), - (@TablePrefix + 'toilette', 'raum_bezeichnung', 'VARCHAR(255)'), - (@TablePrefix + 'toilette', 'sitz_mit_deckel', 'BIT'), - (@TablePrefix + 'toilette', 'sitz_mit_deckel_softclose', 'BIT'), - (@TablePrefix + 'toilette', 'toilettenpapierhalter', 'BIT'), + (@TablePrefix + 'toilette', 'engomoid'), + (@TablePrefix + 'toilette', 'raum_bezeichnung'), + (@TablePrefix + 'toilette', 'sitz_mit_deckel'), + (@TablePrefix + 'toilette', 'sitz_mit_deckel_softclose'), + (@TablePrefix + 'toilette', 'toilettenpapierhalter'), - -- begehung_stammdaten - (@TablePrefix + 'stammdaten', 'Vertrag', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Wirtschaftseinheit', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Mietobjekt', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Strasse_und_Hausnummer', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Postleitzahl', 'NVARCHAR(20)'), - (@TablePrefix + 'stammdaten', 'Ort', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'LeerstBeleg_ab', 'DATE'), - (@TablePrefix + 'stammdaten', 'Geschoss_Kurzbez', 'NVARCHAR(50)'), - (@TablePrefix + 'stammdaten', 'Lage_im_Geschoss', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Anzahl_Raeume', 'INT'), - (@TablePrefix + 'stammdaten', 'Anzahl_halbe_Raeume', 'INT'), - (@TablePrefix + 'stammdaten', 'Hauptnutzflaeche', 'DECIMAL(18,2)'), - (@TablePrefix + 'stammdaten', 'Geschaeftspartner', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Mietername', 'NVARCHAR(255)'), - (@TablePrefix + 'stammdaten', 'Name_weiterer_Mieter', 'NVARCHAR(255)'); - --- Deklariere Variablen für die Tabellen-Schleife -DECLARE @CurrentSuffix NVARCHAR(128); -DECLARE @FullTableName NVARCHAR(256); -DECLARE @CreateTableColumns NVARCHAR(MAX); -DECLARE @SQL_CREATE NVARCHAR(MAX); -- Korrigierte Deklaration - --- Deklariere und öffne einen Cursor, um durch die Tabellennamen-Endungen zu iterieren -DECLARE table_cursor CURSOR FOR - SELECT Suffix FROM @TableSuffixes; - -OPEN table_cursor; - -FETCH NEXT FROM table_cursor INTO @CurrentSuffix; - -WHILE @@FETCH_STATUS = 0 -BEGIN - BEGIN TRY - -- Erstelle den vollständigen Tabellennamen mit dem Präfix - SET @FullTableName = @TablePrefix + @CurrentSuffix; - - -- Überprüfe, ob die Tabelle bereits existiert in der Datenbank 'engomo' - IF NOT EXISTS ( - SELECT * - FROM INFORMATION_SCHEMA.TABLES - WHERE TABLE_NAME = @FullTableName - AND TABLE_SCHEMA = 'dbo' - ) - BEGIN - -- Definiere das CREATE TABLE Statement basierend auf den erlaubten Spalten - -- Die Spalteninformationen werden aus @ColumnsToAdd gefiltert - - SET @CreateTableColumns = ( - SELECT STRING_AGG('[' + ColumnName + '] ' + ColumnType, ', ') - FROM @ColumnsToAdd - WHERE TableName = @FullTableName - ); - - IF @CreateTableColumns IS NULL OR LEN(@CreateTableColumns) = 0 - BEGIN - PRINT 'Keine Spalten definiert für Tabelle ' + @FullTableName + '. Tabelle wird nicht erstellt.'; - END - ELSE - BEGIN - SET @SQL_CREATE = N'CREATE TABLE dbo.[' + @FullTableName + N'] (' + @CreateTableColumns + N');'; - - -- Führe das dynamische SQL aus - EXEC sp_executesql @SQL_CREATE; - - PRINT 'Tabelle ' + @FullTableName + ' wurde erstellt.'; - END - END - ELSE - BEGIN - PRINT 'Tabelle ' + @FullTableName + ' existiert bereits.'; - END - END TRY - BEGIN CATCH - PRINT 'Fehler beim Erstellen der Tabelle ' + @FullTableName + ': ' + ERROR_MESSAGE(); - END CATCH - - -- Hole den nächsten Suffix - FETCH NEXT FROM table_cursor INTO @CurrentSuffix; -END - --- Schließe und deallokiere den Cursor -CLOSE table_cursor; -DEALLOCATE table_cursor; - --- Füge den PRIMARY KEY für jede Tabelle hinzu, die engomoid hat -DECLARE @CurrentTable NVARCHAR(128); -DECLARE @PKName NVARCHAR(128); -DECLARE @AddPKSQL NVARCHAR(MAX); - -DECLARE pk_cursor CURSOR FOR - SELECT DISTINCT TableName - FROM @ColumnsToAdd - WHERE ColumnName = 'engomoid'; - -OPEN pk_cursor; - -FETCH NEXT FROM pk_cursor INTO @CurrentTable; - -WHILE @@FETCH_STATUS = 0 -BEGIN - BEGIN TRY - -- Überprüfe, ob der PRIMARY KEY bereits existiert - IF NOT EXISTS ( - SELECT * - FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS - WHERE TABLE_NAME = @CurrentTable - AND CONSTRAINT_TYPE = 'PRIMARY KEY' - AND TABLE_SCHEMA = 'dbo' - ) - BEGIN - -- Definiere den Constraint-Namen - SET @PKName = 'PK_' + @CurrentTable; - - -- Definiere das ALTER TABLE Statement zum Hinzufügen des PRIMARY KEY - SET @AddPKSQL = N'ALTER TABLE dbo.[' + @CurrentTable + N'] ADD CONSTRAINT [' + @PKName + N'] PRIMARY KEY (engomoid);'; - - -- Führe das dynamische SQL aus - EXEC sp_executesql @AddPKSQL; - - PRINT 'Primary Key auf engomoid in ' + @CurrentTable + ' wurde hinzugefügt.'; - END - ELSE - BEGIN - PRINT 'Primary Key auf engomoid in ' + @CurrentTable + ' existiert bereits.'; - END - END TRY - BEGIN CATCH - PRINT 'Fehler beim Hinzufügen des Primary Keys zu ' + @CurrentTable + ': ' + ERROR_MESSAGE(); - END CATCH - - -- Hole den nächsten TableName - FETCH NEXT FROM pk_cursor INTO @CurrentTable; -END - --- Schließe und deallokiere den Cursor -CLOSE pk_cursor; -DEALLOCATE pk_cursor; + -- begehung_usersettings + (@TablePrefix + 'usersettings', 'user_mail'), + (@TablePrefix + 'usersettings', 'user_theme'); -- Deklariere Variablen für die Spalten-Schleife DECLARE @TargetTable NVARCHAR(128); DECLARE @CurrentColumn NVARCHAR(128); -DECLARE @ColumnType NVARCHAR(128); DECLARE @AddColumnSQL NVARCHAR(MAX); -- Deklariere und öffne einen Cursor, um durch die Spalten zu iterieren DECLARE column_cursor CURSOR FOR - SELECT TableName, ColumnName, ColumnType FROM @ColumnsToAdd; + SELECT TableName, ColumnName FROM @ColumnsToAdd; OPEN column_cursor; -FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn, @ColumnType; +FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn; WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY + -- Überprüfe, ob die Tabelle existiert, andernfalls erstelle die Tabelle + IF NOT EXISTS ( + SELECT * + FROM INFORMATION_SCHEMA.TABLES + WHERE TABLE_NAME = @TargetTable + AND TABLE_SCHEMA = 'dbo' + ) + BEGIN + -- Erstelle die Tabelle, wenn sie nicht existiert + DECLARE @CreateTableSQL NVARCHAR(MAX); + SET @CreateTableSQL = N'CREATE TABLE dbo.[' + @TargetTable + N'] (' + @CurrentColumn + N' NVARCHAR(255));'; + EXEC sp_executesql @CreateTableSQL; + PRINT 'Tabelle ' + @TargetTable + ' wurde erstellt.'; + END + -- Überprüfe, ob die Spalte bereits existiert IF NOT EXISTS ( SELECT * @@ -273,8 +151,8 @@ BEGIN AND TABLE_SCHEMA = 'dbo' ) BEGIN - -- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte - SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] ADD [' + @CurrentColumn + N'] ' + @ColumnType + N';'; + -- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte mit NVARCHAR(255) Typ + SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] ADD [' + @CurrentColumn + N'] NVARCHAR(255);'; -- Führe das dynamische SQL aus EXEC sp_executesql @AddColumnSQL; @@ -291,89 +169,9 @@ BEGIN END CATCH -- Hole die nächste Spalte - FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn, @ColumnType; + FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn; END -- Schließe und deallokiere den Spalten-Cursor CLOSE column_cursor; DEALLOCATE column_cursor; - --- Deklariere Variablen für die Lösch-Schleife -DECLARE @ExistingColumnLoop NVARCHAR(128); -DECLARE @DeleteColumnSQL NVARCHAR(MAX); - --- Deklariere und öffne einen Cursor, um durch die Tabellen zu iterieren -DECLARE delete_cursor CURSOR FOR - SELECT DISTINCT TableName FROM @ColumnsToAdd; - -OPEN delete_cursor; - -FETCH NEXT FROM delete_cursor INTO @TargetTable; - -WHILE @@FETCH_STATUS = 0 -BEGIN - BEGIN TRY - -- Hole alle existierenden Spalten in der Tabelle - DECLARE @ExistingColumns TABLE (ColumnName NVARCHAR(128)); - - INSERT INTO @ExistingColumns (ColumnName) - SELECT COLUMN_NAME - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_NAME = @TargetTable - AND TABLE_SCHEMA = 'dbo'; - - -- Iteriere durch jede existierende Spalte - DECLARE ExistingColumnCursor CURSOR LOCAL FAST_FORWARD FOR - SELECT ColumnName FROM @ExistingColumns; - - OPEN ExistingColumnCursor; - - FETCH NEXT FROM ExistingColumnCursor INTO @ExistingColumnLoop; - - WHILE @@FETCH_STATUS = 0 - BEGIN - -- Überprüfe, ob die Spalte in den erlaubten Spalten ist - IF NOT EXISTS ( - SELECT 1 - FROM @ColumnsToAdd - WHERE TableName = @TargetTable - AND ColumnName = @ExistingColumnLoop - ) - BEGIN - BEGIN TRY - -- Definiere das ALTER TABLE Statement zum Löschen der Spalte - SET @DeleteColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] DROP COLUMN [' + @ExistingColumnLoop + N'];'; - - -- Führe das dynamische SQL aus - EXEC sp_executesql @DeleteColumnSQL; - - PRINT 'Spalte ' + @ExistingColumnLoop + ' wurde aus ' + @TargetTable + ' gelöscht.'; - END TRY - BEGIN CATCH - -- Ignoriere den Fehler und fahre fort - PRINT 'Fehler beim Löschen der Spalte ' + @ExistingColumnLoop + ' aus ' + @TargetTable + ': ' + ERROR_MESSAGE(); - END CATCH - END - ELSE - BEGIN - PRINT 'Spalte ' + @ExistingColumnLoop + ' ist erlaubt in ' + @TargetTable + '.'; - END - - FETCH NEXT FROM ExistingColumnCursor INTO @ExistingColumnLoop; - END - - -- Schließe und deallokiere den existierenden Spalten-Cursor - CLOSE ExistingColumnCursor; - DEALLOCATE ExistingColumnCursor; - END TRY - BEGIN CATCH - PRINT 'Fehler beim Überprüfen/Löschen von Spalten in ' + @TargetTable + ': ' + ERROR_MESSAGE(); - END CATCH - - -- Hole den nächsten TableName - FETCH NEXT FROM delete_cursor INTO @TargetTable; -END - --- Schließe und deallokiere den Lösch-Cursor -CLOSE delete_cursor; -DEALLOCATE delete_cursor;