Sieben | Oracle PL/SQL | E-Book | www.sack.de
E-Book

E-Book, Deutsch, 1090 Seiten

Reihe: Rheinwerk Computing

Sieben Oracle PL/SQL

Das umfassende Handbuch
4. Auflage 2023
ISBN: 978-3-8362-9632-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection

Das umfassende Handbuch

E-Book, Deutsch, 1090 Seiten

Reihe: Rheinwerk Computing

ISBN: 978-3-8362-9632-8
Verlag: Rheinwerk
Format: EPUB
Kopierschutz: 0 - No protection



Mit PL/SQL, der prozeduralen Erweiterung von SQL, verfügen Sie über eine faszinierende Technologie, um Oracles Datenbank mächtige Funktionen abzugewinnen. Egal, ob Sie bereits mit Datenbanken zu tun haben und jetzt die Fähigkeiten mit PL/SQL erweitern möchten, sich als Administrator beispielsweise in die Programmierung von Triggern einarbeiten wollen oder als Anwendungsentwickler einen näheren Blick auf Datenbankinterna werfen müssen: In diesem umfassenden Handbuch finden Sie alles, was Sie benötigen, um mit PL/SQL den maximalen Nutzen für Ihren Anwendungsfall zu finden. Dafür sorgen die gründliche Einführung in Aufbau und Syntax von PL/SQL, hilfreiche Anregungen zum Einsatz und der Verbesserung Ihres Codes sowie ausführliche Workshops mit Praxisbezug. Im Vordergrund des Buchs stehen die Strategien, die Sie benötigen, um performante, sichere und skalierbare Applikationen zu entwickeln. Neben der umfassenden Einführung in PL/SQL geht es daher um Fragen wie beispielsweise: Auf welche Weise können Sie große Datenmengen effizient verarbeiten? Welche Vor- und Nachteile haben Datenbanktrigger, wann sind sie richtig, wann nicht? Wann sollten Sie PL/SQL einsetzen, wann SQL? Wie schützen Sie die Datenbank vor unberechtigtem Zugriff? Die Kombination von strategischer Denkweise zur Datenbankprogrammierung und Workshops sowie Codebeispielen hilft Ihnen bei der korrekten und hochwertigen Datenbankprogrammierung. Aktuell zu Oracle 19c.

Aus dem Inhalt:

  • Für Programmierer und Admins
  • Grundlagen von Oracle-Datenbanken
  • Werkzeuge und Ressourcen
  • Datenbankobjekte und SQL
  • Datensicherheit, Konsistenz, Transaktionen
  • Erweiterung von Datenbankfunktionalitäten
  • Syntax von PL/SQL
  • Datentypen und Kontrollstrukturen
  • Dynamisches SQL
  • Pluggable Databases
  • Debugging, Monitoring und Performancetuning
  • PL/Scope
  • LargeObjects, XML, OOP
  • Workshops aus der Praxis
  • u. v. m.


Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnologien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Dozent an der Hochschule der in Medien Stuttgart.
Sieben Oracle PL/SQL jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material



  Materialien zum Buch ... 21
  1.  Einführung ... 23

       1.1 ... Für wen ist dieses Buch geschrieben? ... 23
       1.2 ... Der Aufbau des Buches ... 26
       1.3 ... Vorwort zur vierten Auflage ... 34

  2.  Verwendete Werkzeuge und Ressourcen ... 35

       2.1 ... Oracles Online-Dokumentation ... 35
       2.2 ... Aufsetzen einer Beispieldatenbank ... 40
       2.3 ... SQL*Plus ... 41
       2.4 ... SQLCL ... 42
       2.5 ... SQL Developer ... 43
       2.6 ... »explain plan« ... 44
       2.7 ... Autotrace ... 46
       2.8 ... Runstats ... 48
       2.9 ... Trace und tkprof ... 49
       2.10 ... Debugger ... 52
       2.11 ... Weitere Werkzeuge ... 53
       2.12 ... Die Beispielskripte ... 53

TEIL I.  Grundlagen ... 55
  3.  Aufbau der Datenbank aus Sicht eines Programmierers ... 57

       3.1 ... Grundlegende Arbeitsweise der Datenbank ... 57
       3.2 ... Logischer Aufbau: Schema, Tablespace und Co. ... 69
       3.3 ... Die physikalische Datenbank ... 79
       3.4 ... Instanz und Speicherstrukturen ... 84
       3.5 ... Containerdatenbank ... 94
       3.6 ... Start der Datenbank ... 95
       3.7 ... Verbindungsaufbau zur Datenbank ... 96

  4.  Datenbankobjekte und SQL ... 113

       4.1 ... Tabellen ... 113
       4.2 ... Index ... 120
       4.3 ... Views und Materialized Views ... 129
       4.4 ... PL/SQL-Programm ... 132
       4.5 ... Sonstige Datenbankobjekte ... 133
       4.6 ... Exkurs: Zeichensatzcodierung ... 139
       4.7 ... Mächtigkeit von SQL ... 145

  5.  Datensicherheit, -konsistenz und Transaktion ... 159

       5.1 ... Lese- und Schreibkonsistenz ... 160
       5.2 ... Transaktion ... 164
       5.3 ... Datenkonsistenz und referenzielle Integrität ... 168
       5.4 ... Explizites Sperren von Daten durch die Anwendung ... 183
       5.5 ... Verarbeitung einer SQL-Anweisung ... 190
       5.6 ... Die Sperrmechanismen von Oracle ... 196
       5.7 ... Datensicherheit ... 197
       5.8 ... Workshop: Einfluss der Programmierung ... 200

  6.  Programmierung der Datenbank ... 213

       6.1 ... Erweiterung der Datenbankfunktionalität ... 213
       6.2 ... Programmierung der Datenkonsistenz ... 215
       6.3 ... Programmierung der Datensicherheit ... 223
       6.4 ... Anwendungsprogrammierung mit PL/SQL ... 226
       6.5 ... Unterstützung der Administration durch PL/SQL ... 227

TEIL II.  Die Sprache PL/SQL ... 231
  7.  Die Blockstruktur und Syntax von PL/SQL ... 233

       7.1 ... Das Grundgerüst: der PL/SQL-Block ... 234
       7.2 ... Prozeduren ... 241
       7.3 ... Funktionen ... 257
       7.4 ... Datenbanktrigger ... 261
       7.5 ... Packages ... 262
       7.6 ... Ausführungsrechte von PL/SQL-Blöcken ... 267
       7.7 ... Compiler-Anweisungen (Pragma) ... 270
       7.8 ... Best Practices ... 272

  8.  Kontrollstrukturen ... 275

       8.1 ... Auswertende Anweisung 1 (»if then else«-Anweisung) ... 275
       8.2 ... Auswertende Anweisung 2 (»case«-Anweisung) ... 277
       8.3 ... Einfache Schleifen ... 281
       8.4 ... Konditionale Kompilierung ... 292
       8.5 ... Aus der Mottenkiste: Konzepte, die Sie nicht verwenden sollten ... 297

  9.  Datentypen in PL/SQL ... 303

       9.1 ... Skalare Datentypen ... 303
       9.2 ... Kollektionen in PL/SQL ... 314
       9.3 ... Cursor ... 340

10.  Cursor ... 341

       10.1 ... Lebenszyklus eines Cursors ... 341
       10.2 ... Cursor-Attribute ... 344
       10.3 ... Parametrisierte Cursor ... 347
       10.4 ... Mengenverarbeitung mit »bulk collect« ... 349
       10.5 ... Kurzform: die »cursor for«-Schleife ... 351
       10.6 ... Implizite versus explizite Cursor ... 353
       10.7 ... Cursor-Variablen (»ref«-Cursor) ... 359
       10.8 ... Cursor-Ausdrücke ... 366
       10.9 ... Gemeinsamer Zugriff auf Daten über verteilte Cursor ... 371
       10.10 ... Tabellenfunktionen ... 373

11.  Events in der Datenbank: Programmierung von Triggern ... 385

       11.1 ... DML-Trigger ... 385
       11.2 ... »instead of«-Trigger ... 406
       11.3 ... Einsatzbereiche von DML-Triggern ... 409
       11.4 ... Wann Sie DML-Trigger nicht verwenden sollten ... 429
       11.5 ... Datenbanktrigger ... 433
       11.6 ... Zusammenfassung ... 445

12.  Packages ... 449

       12.1 ... Trennung von öffentlicher und privater Logik ... 449
       12.2 ... Überladung in Packages ... 465
       12.3 ... Ausführungsrechte von Packages ... 471
       12.4 ... Packages und die Dependency Chain ... 476
       12.5 ... Verschlüsselung von Package-Code ... 483
       12.6 ... Oracle-Packages ... 488
       12.7 ... Workshop: Verwaltung von Anwendungsparametern ... 501

13.  Erweiterung von SQL ... 521

       13.1 ... Wann SQL erweitert werden sollte ... 521
       13.2 ... SQL durch eigene Funktionen erweitern ... 527
       13.3 ... Workshop: Berechnung der Fakultät ... 537
       13.4 ... Gruppenfunktionen selbst erstellen ... 547
       13.5 ... Workshop: Code-Generator für Gruppenfunktionen ... 558

14.  Dynamisches SQL ... 571

       14.1 ... Dynamisches SQL mittels »execute immediate« ... 572
       14.2 ... Dynamisches SQL mit Cursor-Variablen ... 576
       14.3 ... Workshop: Erstellung einer Prozedur als Schnittstelle zu einem externen Programm ... 576
       14.4 ... DBMS_SQL-Package ... 581
       14.5 ... Sicherheit bei dynamischem SQL ... 597
       14.6 ... SQL-Makros ... 601
       14.7 ... Polymorphe Tabellenfunktionen ... 615

15.  Exception ... 631

       15.1 ... Oracle-Fehler ... 631
       15.2 ... Applikationsfehler erstellen und bearbeiten ... 647
       15.3 ... Workshop: zentralisierter Fehler-Handler mit einem Trigger ... 657
       15.4 ... Zusammenfassung ... 662

TEIL III.  PL/SQL im Einsatz ... 665
16.  Arbeiten mit LOBs (Large Objects) ... 667

       16.1 ... Technische Struktur ... 668
       16.2 ... Die Datentypen »CLOB«, »NCLOB«, »BLOB« und »BFILE« ... 683
       16.3 ... Das Package »DBMS_LOB« ... 686
       16.4 ... Workshop: Hilfsfunktionen zum Arbeiten mit LOBs ... 692

17.  Arbeiten mit XML ... 701

       17.1 ... Der Datentyp »XMLType« ... 701
       17.2 ... Die Speicherung von XML-Daten in der Datenbank ... 710
       17.3 ... XML aus relationalen Daten erzeugen ... 713
       17.4 ... Relationale Daten aus XML extrahieren ... 726
       17.5 ... XML mit PL/SQL verarbeiten ... 731
       17.6 ... Die XML-Datenbank ... 743

18.  Arbeiten mit JSON ... 769

       18.1 ... JSON ... 769
       18.2 ... Programmierung von JSON mit PL/SQL ... 780
       18.3 ... SODA (Simple Oracle Document Access) ... 789

19.  Objektorientierung ... 801

       19.1 ... Einführung in die Objektorientierung ... 803
       19.2 ... Objektorientierte Datentypen ... 815
       19.3 ... Objektorientierte Datenmodelle ... 826
       19.4 ... Workshop: der Datentyp »MoneyType« ... 830
       19.5 ... Objektorientierte Anwendungsentwicklung und relationale Datenbanken ... 851

20.  Integration von Oracle in Applikationen ... 881

       20.1 ... Sperrung von Daten bei der Datenänderung ... 882
       20.2 ... Speicherung von Session-Informationen ... 901
       20.3 ... Zugriff auf Daten über PL/SQL-Packages ... 920
       20.4 ... Workshop: Keimzelle einer sicheren Datenbankanwendung ... 924

21.  Performance-Tuning und Codeanalyse ... 945

       21.1 ... Regeln zur Performance-Optimierung ... 946
       21.2 ... Optimierungsmöglichkeiten von PL/SQL ... 955
       21.3 ... Compiler-Warnungen ... 969
       21.4 ... PL/Scope ... 973
       21.5 ... PL/SQL Hierarchical Profiler ... 980
       21.6 ... Den Speicherverbrauch von PL/SQL überwachen ... 999

22.  Workshop: PL/SQL Instrumentation Toolkit (PIT) ... 1003

       22.1 ... Überblick: die Idee und die Architektur ... 1003
       22.2 ... Beschreibung der einzelnen Komponenten ... 1012
       22.3 ... Implementierung des PIT-Administrations-Packages ... 1047
       22.4 ... Weitere Ausgabemodule ... 1055

  Index ... 1071


1    Einführung


Die Oracle-Datenbank ist eines der mächtigsten und umfangreichsten relationalen Datenbanksysteme. Schon SQL ist ungeheuer vielseitig einsetzbar. Doch erst mit PL/SQL erschließt sich das gesamte Potenzial. Daher ist die Kenntnis von PL/SQL für jeden, der sich mit Oracle beschäftigt, essenziell.

PL/SQL ist keine Programmiersprache.

Das mag zunächst verwunderlich klingen, schließlich bedeutet PL/SQL Procedural Language for SQL, also eben das Gegenteil des Einleitungssatzes. Doch schon im ersten Satz von Oracle zur Einführung in PL/SQL heißt es: PL/SQL ist eine prozedurale Erweiterung von SQL. Dieser feine Unterschied ist sehr wichtig, auch für dieses Buch: Ein Buch über PL/SQL ist nicht komplett ohne ein Buch über SQL, wie z. B. mein Buch zum Thema, das ebenfalls beim Rheinwerk Verlag erschienen ist und sich inhaltlich sozusagen als erster Band zum vorliegenden Buch begreift. Sollten Sie also ein Neueinsteiger in die Welt der Oracle-Datenbanken sein, sollte Ihr erstes Augenmerk auf der Abfragesprache SQL liegen, nicht auf PL/SQL. Die syntaktischen Grundlagen von PL/SQL, die Namenskonventionen, aber auch die überwältigende Mehrheit der Funktionen in PL/SQL kommt aus SQL. Das vorweggenommen, ist PL/SQL aber auch eine faszinierende Technologie, mit deren Hilfe Sie der Datenbank den mächtigen Funktionsumfang abgewinnen können, den Sie sonst nur in sehr wenigen anderen Datenbanken finden. Mit diesem Buch werde ich Sie in die Sprache PL/SQL einführen und Ihnen erläutern, wie Sie aus der Datenbank maximalen Nutzen für Ihre Anwendung ziehen können.

1.1    Für wen ist dieses Buch geschrieben?


Nun, ganz eindeutig für Sie. Damit meine ich, dass die Konzeption dieses Buches natürlich kein Selbstzweck, sondern dem Ziel unterworfen ist, Ihnen zu erklären, wie und wofür PL/SQL einzusetzen ist, und eben nicht dem Ziel, einfach nur ein Buch über PL/SQL zu schreiben, das lediglich alle wichtigen Merkmale der Sprache auflistet. Daher habe ich mir zu Beginn Gedanken darüber gemacht, wer Sie eigentlich sind. Wer liest ein solches Buch? Ich stelle mir vor, dass Sie beruflich bereits mit Datenbanken zu tun hatten, auch schon programmiert haben und nun Ihre Kenntnisse und Fähigkeiten um PL/SQL erweitern möchten oder müssen. Vielleicht sind Sie ein Administrator, der sich in die Programmierung von Triggern einarbeiten oder PL/SQL-Programme zur Erleichterung seiner Arbeit verfassen muss? Vielleicht sind Sie aber auch ein Anwendungsentwickler, der bislang in einer der Programmiersprachen für Anwendungsentwicklung programmiert hat und nun, freiwillig oder aufgrund von Performance-Problemen gezwungen, einen näheren Blick in die Datenbankinterna werfen will? Vielleicht sind Sie der Betreuer einer Software, die von anderen geschrieben wurde (vielleicht von Vorgängern in Ihrem Job) und Ihnen nun zur weiteren Betreuung überlassen wurde. Sind Sie ein absoluter Neuling in Datenbanken und wollen den Einstieg über PL/SQL erreichen? Nein, das glaube ich eigentlich nicht. Daher richte ich mein Buch an meiner Erwartung an Sie aus.

Dieses Buch richtet sich einerseits an Leser, die SQL-Kenntnisse haben. PL/SQL-Bücher sind keine Einstiegsliteratur in Datenbanken, sondern setzen den Weg fort, den Sie durch die Auseinandersetzung mit relationalen Datenmodellen und SQL bereits begonnen haben. Ich setze nicht voraus, dass Ihre SQL-Kenntnisse sehr umfangreich sind, doch ein Grundverständnis dieser Abfragesprache sollte in jedem Fall vorhanden sein. Dann gehe ich davon aus, dass Sie bereits in irgendeiner Programmiersprache programmiert haben. Ich kann mir einfach nicht recht vorstellen, dass Sie das Programmieren gerade innerhalb einer Datenbank lernen möchten (oder müssen). Normalerweise, das lehrt mich auch die Erfahrung aus den vielen Kursen, die ich zum Thema PL/SQL-Einführung gegeben habe, ist die Programmierung der Datenbank ein Thema für Menschen, die bereits Programmiererfahrung in anderen Sprachen, sei es Cobol, C, C++, Java oder Visual Basic, haben. Daher möchte ich Sie nicht langweilen und erläutere die Grundlagen einer if-Anweisung nur sehr kurz.

Sollten Sie eine der beiden Voraussetzungen, die ich hier genannt habe, nicht mitbringen, empfehle ich Ihnen, sich zunächst mit diesen Themen zu beschäftigen. Insbesondere gilt diese Empfehlung für die Beschäftigung mit der Abfragesprache SQL. Wenn Sie mögen, können Sie für einen Einstieg in die Abfragesprache SQL mein Buch Oracle SQL – das umfassende Handbuch verwenden, das ebenfalls bei Rheinwerk erschienen ist. Je besser Sie diese Sprache beherrschen, umso leichter fällt es Ihnen, Aufgabenstellungen in Bezug auf Daten einer Datenbank zu lösen. Und auch das gilt: Je besser Sie SQL beherrschen, desto seltener müssen Sie zu einer Programmiersprache greifen, um ein Problem zu lösen. Das ist leider auch auf der Zeitachse wahr: Sollten Sie sich sehr gut mit dem SQL der Oracle-Datenbank-Version 7.3.4 auskennen, werden Sie staunen, was seit dieser Zeit in SQL an Fähigkeiten hinzugekommen ist. Die Beschäftigung mit SQL ist immer die Beschäftigung mit SQL in der Datenbankversion Ihrer Datenbank. Für diejenigen unter Ihnen, die noch nicht programmiert haben, glaube ich, wird der Stoff relativ schnell und wenig didaktisch vorangehen. Vielleicht sollten Sie ins Auge fassen, die Programmierung vorab zu erlernen. Auch hier geht es weniger darum, Experte in einer Programmiersprache zu sein, sondern um ein generelles Verständnis der Vorgehensweise beim Programmieren. Diese Einführung kann dieses Buch nicht leisten.

Darüber hinaus muss ich eine – für mich sehr schwierige – Entscheidung treffen: Werden Sie als meine Leser eher Entwickler sein, Endanwender oder Administratoren? Welcher konkrete Einsatzzweck liegt Ihrem Interesse an PL/SQL zugrunde? Diese Entscheidung ist nicht leicht. Ich habe mich dafür entschieden, aus dem Blickwinkel des Entwicklers und des Administrators zu schauen; der Schwerpunkt liegt allerdings auf dem Blickwinkel des Entwicklers von Anwendungssoftware. Aus dieser Entscheidung resultieren mehrere Konsequenzen:

  • Ich gehe davon aus, dass die meisten Anwendungsentwicklungen (insbesondere neu aufgesetzte Projekte) nicht mehr nur in einer Technologie allein entwickelt werden. Die aktuellen Architekturentscheidungen mit Webanwendungen, Applikationsservern und Datenbankservern lassen eine Entwicklung in einer Programmiersprache eigentlich auch nicht zu. Daher widme ich einigen Raum dieses Buches auch den Problemen der Integration von Oracle-Datenbanken in Anwendungen, die in anderen Programmiersprachen entwickelt werden.

  • Außerdem gehe ich davon aus, dass Datenbanken (nicht nur Oracle, sondern Datenbanken generell) vielen Anwendungsentwicklern nur als Datenspeicher geläufig sind und die Interna der Arbeitsweise ihnen nicht immer komplett bekannt sind. Daher gebe ich Ihnen eine ausführliche Einführung in die Arbeitsweise von Oracle-Datenbanken. Diese Einführung wird Administratoren bekannt vorkommen und für sie eventuell etwas oberflächlich sein, ist aus meiner Sicht für Entwickler aber unbedingt von Interesse, um zu verstehen, warum die Datenbank auf eine gewisse Weise programmiert werden will. Für Administratoren schließlich sind Kenntnisse einiger Aspekte der Anwendungsprogrammierung von unschätzbarem Wert, einfach, um zu verstehen, welche Problemstellungen durch Anwendungsentwickler in der Datenbank gelöst werden müssen. Daher empfehle ich die Abschnitte, die sich mit der Entwicklung von Anwendungen und der Integration von Oracle-Datenbanken in solche Anwendungen befassen, auch den Administratoren.

  • Ich gehe schließlich davon aus, dass es wichtiger ist, zu erklären, warum etwas getan werden muss, als wie etwas getan werden muss. Anders gesagt: Dieses Buch ist keine Referenz zu PL/SQL, in der Sie im Index einen Befehl nachschlagen können und auf Seite 371 alle Parameter der Prozedur aufgelistet bekommen. Diese Funktion übernehmen die Online-Ressourcen, die bei Oracle auf einem sehr hohen Niveau sind, wesentlich besser. Allein die Dokumentation der mitgelieferten Packages umfasst bei der Datenbankversion 19c stolze 4843 Seiten, und das bringt mich zum ersten Grund für meine Entscheidung, keine Referenz zu PL/SQL zu schreiben: Diese ist naturgemäß von der Version der Datenbank abhängig und daher schon veraltet, bevor sie ausgeliefert wird. Der zweite Grund ist, dass es mir ein besonderes Anliegen ist, Ihnen zu erklären, wie die Datenbank gut programmiert wird. Die Kunst besteht darin, der Datenbank bei der Erfüllung ihrer Aufgaben möglichst nicht im Wege zu stehen. Das ist gar nicht so leicht und gelingt nur, wenn Sie wissen, was Sie tun. Und genau dafür benötige ich Platz, den ich nicht durch Auflistungen von Prozedurparametern verschwenden wollte. Ich trete mit dem Ziel an, Ihnen zu erklären, was Sie tun müssen und warum, um eine gute Anwendung oder Anwendungsunterstützung zu erhalten. Messen Sie mich daran.

Außerdem ist dies ein Buch, in dem ich meine Meinung äußere. Vielleicht sollte ich so etwas nicht tun, und vielleicht reizt dies zum Widerspruch. Ich habe mich dennoch entschieden, Ihnen meine persönliche Meinung darüber mitzuteilen, wie eine Datenbank, speziell eine Oracle-Datenbank, programmiert werden sollte. Die Meinung basiert auf meiner Berufserfahrung, in der ich viel Code gesehen habe. In meinem Beruf komme ich vor allem zu Kunden, deren Code nicht oder nicht gut...


Sieben, Jürgen
Jürgen Sieben ist inhabender Geschäftsführer der ConDeS GmbH. Er beschäftigt sich mit der Entwicklung und Parametrierung von Software, Computerberatung und Systemanalyse für namhafte Kunden wie T-Mobile und Metro AG. Zudem schult er Datenbanktechnologien, z. B. alle relevanten Oracle-Bereiche (Einführung, SQL, PL/SQL, Administration, Performance, Backup & Recovery, Datawarehousing etc.). Seit 2008 ist er Dozent an der Hochschule der in Medien Stuttgart.



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.