DECLARE -- IDs v_doc_type_id dc_document_types.id%TYPE; v_catalog_id dc_question_catalogs.id%TYPE; v_cat1_id dc_question_categories.id%TYPE; v_cat2_id dc_question_categories.id%TYPE; v_cat3_id dc_question_categories.id%TYPE; v_cat4_id dc_question_categories.id%TYPE; v_cat5_id dc_question_categories.id%TYPE; v_cat6_id dc_question_categories.id%TYPE; BEGIN -- ============================================================ -- 1. DOKUMENTENTYP -- ============================================================ INSERT INTO dc_document_types ( name, description, row_version, created, created_by, updated, updated_by ) VALUES ( 'AGB', 'Allgemeine Geschäftsbedingungen – vorformulierte Vertragsbedingungen gemäß §305 BGB', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_doc_type_id; -- ============================================================ -- 2. FRAGENKATALOG -- ============================================================ INSERT INTO dc_question_catalogs ( created_by_user, based_on_reference, document_type_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( NULL, NULL, v_doc_type_id, 'AGB-Prüfkatalog (BGB §305–310)', 'Prüfung von Allgemeinen Geschäftsbedingungen auf Konformität mit dem deutschen AGB-Recht. ' || 'Grundlage: §§305–310 BGB sowie aktuelle BGH-Rechtsprechung.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_catalog_id; -- ============================================================ -- 3. KATEGORIEN -- ============================================================ INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Einbeziehung & Transparenz', 'Prüfung ob die AGB wirksam einbezogen wurden und dem Transparenzgebot (§307 Abs. 1 S. 2 BGB) entsprechen.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat1_id; INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Haftung & Gewährleistung', 'Prüfung von Haftungsbeschränkungen und Gewährleistungsregelungen auf Zulässigkeit nach §309 Nr. 7/8 BGB.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat2_id; INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Zahlungs- & Lieferbedingungen', 'Prüfung von Zahlungsfristen, Verzugszinsen, Lieferfristen und Eigentumsvorbehalt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat3_id; INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Laufzeit & Kündigung', 'Prüfung von Vertragslaufzeiten, Kündigungsfristen und automatischer Verlängerung gemäß §309 Nr. 9 BGB.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat4_id; INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Datenschutz & Compliance', 'Prüfung der Datenschutzklauseln auf Konformität mit DSGVO und BDSG.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat5_id; INSERT INTO dc_question_categories ( catalog_id, name, description, row_version, created, created_by, updated, updated_by ) VALUES ( v_catalog_id, 'Verbotene Klauseln §307–309 BGB', 'Prüfung auf explizit verbotene oder unangemessen benachteiligende Klauseln.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ) RETURNING id INTO v_cat6_id; -- ============================================================ -- 4. FRAGEN -- ============================================================ ------------------------------------------------------------ -- KATEGORIE 1: Einbeziehung & Transparenz ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat1_id, 'Wird dem Vertragspartner vor oder bei Vertragsschluss ausdrücklich auf die Geltung der AGB hingewiesen (§305 Abs. 2 Nr. 1 BGB)?', 'SCORE', 50, 'ABWEICHUNG', 'Kein Hinweis auf AGB vorhanden; AGB nur im Footer der Website verlinkt ohne ausdrücklichen Hinweis beim Vertragsschluss.', 'AGB sind ausdrücklich im Vertragsangebot genannt, z. B.: „Es gelten unsere AGB in der jeweils gültigen Fassung, abrufbar unter [URL]."', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat1_id, 'Wird dem Vertragspartner die zumutbare Möglichkeit verschafft, vom Inhalt der AGB Kenntnis zu nehmen (§305 Abs. 2 Nr. 2 BGB)?', 'SCORE', 50, 'ABWEICHUNG', 'AGB nur auf Anfrage erhältlich; kein direkter Link, kein Aushang, keine Übergabe.', 'Vollständiger Text der AGB ist abrufbar unter einem direkt verlinkten URL oder wird als Anhang mitgesendet.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat1_id, 'Sind alle Klauseln klar, verständlich und ohne Fachsprache formuliert (Transparenzgebot §307 Abs. 1 S. 2 BGB)?', 'SCORE', 60, 'ABWEICHUNG', 'Klauseln enthalten unverständliche Fachbegriffe ohne Erläuterung; Satzgefüge sind verschachtelt und mehrdeutig.', 'Klauseln sind in einfacher Sprache formuliert, kurze Sätze, wichtige Begriffe werden erklärt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat1_id, 'Enthält das Dokument eine Versionsnummer oder ein Datum, das die aktuell gültige Fassung eindeutig kennzeichnet?', 'SCORE', 70, 'HINWEIS', 'Kein Datum, keine Versionsnummer vorhanden.', 'Fußzeile enthält: „Stand: Januar 2025, Version 3.1"', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat1_id, 'Wird geregelt, wie Änderungen der AGB dem Vertragspartner mitgeteilt werden und wann diese wirksam werden?', 'SCORE', 50, 'ABWEICHUNG', 'Keine Regelung zu AGB-Änderungen; stillschweigende Zustimmung durch Weiterbenutzung des Dienstes wird unterstellt.', 'Änderungen werden per E-Mail angekündigt mit einer Einspruchsfrist von mindestens 6 Wochen; Widerspruchsrecht ist ausdrücklich genannt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); ------------------------------------------------------------ -- KATEGORIE 2: Haftung & Gewährleistung ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat2_id, 'Wird die Haftung für Vorsatz und grobe Fahrlässigkeit vollständig ausgeschlossen (§309 Nr. 7a BGB – unzulässig)?', 'SCORE', 50, 'ABWEICHUNG', '„Jegliche Haftung, einschließlich Vorsatz und grober Fahrlässigkeit, wird hiermit ausgeschlossen."', 'Haftungsausschluss gilt nur für leichte Fahrlässigkeit; Vorsatz und grobe Fahrlässigkeit bleiben ausdrücklich unberührt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat2_id, 'Wird die Haftung für Körper- und Gesundheitsschäden ausgeschlossen (§309 Nr. 7b BGB – unzulässig)?', 'SCORE', 50, 'ABWEICHUNG', '„Eine Haftung für Personen- und Sachschäden jeglicher Art ist ausgeschlossen."', 'Haftung für Personenschäden ist explizit ausgenommen: „Die Haftungsbeschränkung gilt nicht für Schäden an Leben, Körper oder Gesundheit."', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat2_id, 'Werden gesetzliche Gewährleistungsrechte des Käufers vollständig ausgeschlossen (§309 Nr. 8b BGB – unzulässig bei Neuwaren)?', 'SCORE', 50, 'ABWEICHUNG', '„Gewährleistungsansprüche sind vollständig ausgeschlossen."', 'Gewährleistungsfrist wird auf das gesetzliche Minimum (2 Jahre bei Neuwaren) gesetzt; vollständiger Ausschluss ist nicht vorhanden.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat2_id, 'Wird die Haftung für die Verletzung wesentlicher Vertragspflichten (Kardinalpflichten) unangemessen eingeschränkt?', 'SCORE', 50, 'ABWEICHUNG', '„Jegliche Haftung des Anbieters ist auf 50 € begrenzt, unabhängig von der Art der Pflichtverletzung."', 'Haftungsbegrenzung gilt nicht für die Verletzung wesentlicher Vertragspflichten; bei deren Verletzung haftet der Anbieter auf den typischerweise vorhersehbaren Schaden.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); ------------------------------------------------------------ -- KATEGORIE 3: Zahlungs- & Lieferbedingungen ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat3_id, 'Sind die vereinbarten Zahlungsfristen klar und eindeutig definiert?', 'SCORE', 60, 'HINWEIS', 'Keine Angabe zur Zahlungsfrist; Fälligkeit unklar.', 'Zahlung ist innerhalb von 14 Tagen nach Rechnungsstellung ohne Abzug fällig.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat3_id, 'Werden unangemessen hohe Verzugszinsen oder Vertragsstrafen bei Zahlungsverzug festgelegt (§309 Nr. 6 BGB)?', 'SCORE', 50, 'ABWEICHUNG', '„Bei Zahlungsverzug werden Zinsen in Höhe von 15 % p. a. sowie eine Bearbeitungsgebühr von 50 € pro Mahnung berechnet."', 'Verzugszinsen entsprechen dem gesetzlichen Zinssatz (§288 BGB); keine unverhältnismäßigen Mahngebühren.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat3_id, 'Sind Lieferfristen verbindlich oder werden nur unverbindliche Richtwerte ohne Konsequenzen bei Überschreitung angegeben?', 'SCORE', 50, 'HINWEIS', '„Lieferzeiten sind unverbindlich; eine Überschreitung berechtigt nicht zur Stornierung."', 'Lieferfristen sind verbindlich; bei Überschreitung um mehr als 14 Tage hat der Käufer ein Rücktrittsrecht.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat3_id, 'Wird ein erweiterter Eigentumsvorbehalt vereinbart, der über die gelieferte Ware hinausgeht (z. B. Kontokorrentvorbehalt)?', 'SCORE', 50, 'HINWEIS', '„Das Eigentum verbleibt beim Verkäufer bis zur vollständigen Bezahlung aller gegenwärtigen und zukünftigen Forderungen aus der Geschäftsbeziehung."', 'Einfacher Eigentumsvorbehalt: Eigentum geht nach vollständiger Bezahlung des jeweiligen Kaufpreises über.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); ------------------------------------------------------------ -- KATEGORIE 4: Laufzeit & Kündigung ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat4_id, 'Beträgt die Erstlaufzeit bei Dauerschuldverhältnissen mehr als zwei Jahre (§309 Nr. 9a BGB – unzulässig)?', 'SCORE', 50, 'ABWEICHUNG', '„Der Vertrag hat eine Mindestlaufzeit von 36 Monaten."', 'Mindestlaufzeit beträgt maximal 24 Monate.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat4_id, 'Verlängert sich der Vertrag bei Nichtkündigung um mehr als ein Jahr automatisch (§309 Nr. 9b BGB – unzulässig)?', 'SCORE', 50, 'ABWEICHUNG', '„Wird der Vertrag nicht 3 Monate vor Ablauf gekündigt, verlängert er sich automatisch um 24 Monate."', 'Automatische Verlängerung beträgt maximal 12 Monate; Kündigungsfrist höchstens 3 Monate.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat4_id, 'Beträgt die Kündigungsfrist für den Vertragspartner mehr als drei Monate (§309 Nr. 9c BGB – unzulässig)?', 'SCORE', 50, 'ABWEICHUNG', '„Der Vertrag kann mit einer Frist von 6 Monaten zum Vertragsende gekündigt werden."', 'Kündigungsfrist beträgt maximal 3 Monate zum Ende der Vertragslaufzeit.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat4_id, 'Ist das Recht zur außerordentlichen Kündigung aus wichtigem Grund explizit oder durch Generalausschluss eingeschränkt?', 'SCORE', 50, 'ABWEICHUNG', '„Eine Kündigung ist ausschließlich zum regulären Vertragsende möglich."', 'Das Recht zur fristlosen Kündigung aus wichtigem Grund gemäß §314 BGB bleibt ausdrücklich unberührt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); ------------------------------------------------------------ -- KATEGORIE 5: Datenschutz & Compliance ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat5_id, 'Wird eine Rechtsgrundlage für die Verarbeitung personenbezogener Daten gemäß Art. 6 DSGVO genannt?', 'SCORE', 70, 'ABWEICHUNG', 'Keine Angabe zur Rechtsgrundlage der Datenverarbeitung in den AGB.', 'Datenverarbeitung erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung); weitere Grundlagen sind aufgeführt.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat5_id, 'Wird der Verantwortliche gemäß Art. 4 Nr. 7 DSGVO mit vollständigen Kontaktdaten genannt?', 'SCORE', 70, 'ABWEICHUNG', 'Kein Verantwortlicher genannt; nur allgemeiner Firmenname ohne Adresse.', 'Name, Anschrift, E-Mail und ggf. Datenschutzbeauftragter sind vollständig angegeben.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat5_id, 'Werden die Betroffenenrechte (Auskunft, Löschung, Berichtigung, Widerspruch) gemäß Art. 15–21 DSGVO kommuniziert?', 'SCORE', 60, 'ABWEICHUNG', 'Kein Hinweis auf Betroffenenrechte.', 'Alle Betroffenenrechte sind aufgeführt mit Hinweis auf den Kontaktweg zur Ausübung.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat5_id, 'Wird eine Weitergabe von Daten an Dritte oder eine Übermittlung in Drittländer außerhalb der EU geregelt?', 'SCORE', 60, 'HINWEIS', 'Keine Regelung zur Datenweitergabe; Drittlandübermittlung unerwähnt.', 'Datenweitergabe an Dritte ist aufgelistet; Drittlandübermittlung erfolgt nur auf Basis von Standardvertragsklauseln gemäß Art. 46 DSGVO.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); ------------------------------------------------------------ -- KATEGORIE 6: Verbotene Klauseln §307–309 BGB ------------------------------------------------------------ INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat6_id, 'Enthält die AGB eine Klausel, die dem Verwender einseitig das Recht einräumt, vereinbarte Leistungen zu ändern (§308 Nr. 4 BGB)?', 'SCORE', 50, 'ABWEICHUNG', '„Wir behalten uns vor, unsere Leistungen jederzeit und ohne Ankündigung zu ändern oder einzustellen."', 'Leistungsänderungen sind nur aus sachlich gerechtfertigtem Grund zulässig; dem Kunden steht ein Sonderkündigungsrecht zu.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat6_id, 'Wird dem Vertragspartner das Recht zur Aufrechnung mit unbestrittenen oder rechtskräftig festgestellten Forderungen entzogen (§309 Nr. 3 BGB)?', 'SCORE', 50, 'ABWEICHUNG', '„Eine Aufrechnung gegen Forderungen des Anbieters ist ausgeschlossen."', 'Aufrechnung ist zulässig mit unbestrittenen oder rechtskräftig festgestellten Gegenforderungen.', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat6_id, 'Wird der Gerichtsstand ausschließlich auf den Sitz des Verwenders festgelegt, obwohl der Vertragspartner Verbraucher ist (§29c ZPO)?', 'SCORE', 50, 'ABWEICHUNG', '„Ausschließlicher Gerichtsstand für alle Streitigkeiten ist München."', 'Gerichtsstandvereinbarung gilt nur für Kaufleute; bei Verbrauchern gilt der gesetzliche Gerichtsstand (Wohnort des Verbrauchers).', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat6_id, 'Wird die Anwendung deutschen Rechts ausdrücklich geregelt, und werden verbraucherschützende Vorschriften des Herkunftslandes des Kunden ausgehebelt?', 'SCORE', 50, 'HINWEIS', '„Es gilt ausschließlich deutsches Recht unter vollständigem Ausschluss des UN-Kaufrechts sowie aller ausländischen Schutzvorschriften."', 'Rechtswahl gilt für Kaufleute; Verbraucher genießen den Schutz der zwingenden Vorschriften ihres Heimatlandes (Art. 6 Rom-I-VO).', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); INSERT INTO dc_questions ( category_id, question_text, evaluation_type, threshold, result_handling, example_0_percent, example_100_percent, row_version, created, created_by, updated, updated_by ) VALUES ( v_cat6_id, 'Enthält die AGB eine salvatorische Klausel für den Fall der Unwirksamkeit einzelner Bestimmungen?', 'SCORE', 70, 'HINWEIS', 'Keine salvatorische Klausel vorhanden; Unwirksamkeit einzelner Klauseln könnte gesamte AGB gefährden.', '„Sollten einzelne Bestimmungen dieser AGB unwirksam sein, bleibt die Wirksamkeit der übrigen Bestimmungen unberührt."', 1, SYSDATE, 'SYSTEM', SYSDATE, 'SYSTEM' ); COMMIT; DBMS_OUTPUT.PUT_LINE('Erfolgreich angelegt:'); DBMS_OUTPUT.PUT_LINE(' Dokumententyp-ID : ' || v_doc_type_id); DBMS_OUTPUT.PUT_LINE(' Katalog-ID : ' || v_catalog_id); DBMS_OUTPUT.PUT_LINE(' Kategorie 1 ID : ' || v_cat1_id || ' (Einbeziehung & Transparenz)'); DBMS_OUTPUT.PUT_LINE(' Kategorie 2 ID : ' || v_cat2_id || ' (Haftung & Gewährleistung)'); DBMS_OUTPUT.PUT_LINE(' Kategorie 3 ID : ' || v_cat3_id || ' (Zahlungs- & Lieferbedingungen)'); DBMS_OUTPUT.PUT_LINE(' Kategorie 4 ID : ' || v_cat4_id || ' (Laufzeit & Kündigung)'); DBMS_OUTPUT.PUT_LINE(' Kategorie 5 ID : ' || v_cat5_id || ' (Datenschutz & Compliance)'); DBMS_OUTPUT.PUT_LINE(' Kategorie 6 ID : ' || v_cat6_id || ' (Verbotene Klauseln §307–309 BGB)'); EXCEPTION WHEN OTHERS THEN ROLLBACK; DBMS_OUTPUT.PUT_LINE('FEHLER: ' || SQLERRM); RAISE; END; /