Diskussion:PL/SQL

Letzter Kommentar: vor 10 Monaten von Dr.tux in Abschnitt Einfluss von COBOL?

an dem Artikel mitarbeiten Bearbeiten

--NiKo 11:56, 1. Feb 2005 (CET) würde mich freuen wenn andere Themeninteressierte mit an dem Artikel arbeiten würden.

--HP 15:44, 14. Mai 2005 (CEST) Ich finde den Artikel gut recherchiert und formuliert. Die Abschnitte zu SELECT, INSERT und UPDATE sind aber keine PL/SQL-Spezifika, sondern ANSI-SQL. Aus diesem Grund würde ich plädieren, sie zu entfernen.Beantworten

Ist erledigt. Siehe meinen Diskussionsbeitrag unten --Julius-m 12:47, 18. Jan. 2008 (CET)Beantworten

Welche Themen hier aber sicher gut aufgehoben wären:

  • die Rolle von PL/SQL beim Zugriff auf Systemfunktionen (AQ, LOBs, Statistiken, Replikation etc.)
  • Positionierung von Entwicklungsumgebungen.

da ich momentan mit der Zeit ein wenig knapp bin kann ich mich leider nicht an dem schreiben der artikeln beteiligen. finde ihre ideen aber gut, wäre prima wenn sie oder ein anderer wikipedianer sich darum kümmern könnte NiKo 15:25, 17. Mai 2005 (CEST)Beantworten

Diskussion aus dem Review (Juni 2005) Bearbeiten

Hallo,

  • da hast du dir viel Mühe mit der farblichen Hervorhebung der Schlüsselworte gemacht, aber blau bedeutet in der WP üblicherweise "link" und rot "fehlender Artikel". Daher ist die Farbgebung etwas suboptimal. Außerdem schreibt man Code üblicherweise in gleichbreiter Schrift mit code-Tags (siehe Continuous Query Language).
  • die Abschnitte select, insert und update sind redundant, da schon in SQL beschrieben. Ein Verweis dorthin wäre besser.

--Kurt seebauer 13:10, 1. Jun 2005 (CEST)

Ich persönlich finde das mit den farben nicht so schlimm, da die links in der wikipedia ja unterstrichen sind,andere meinungen dazu (die farben sind übrigens denen im Toad ähnlich. NiKo 08:29, 2. Jun 2005 (CEST)

Wer den "Moloch" nicht kennt, wird durch den Artikel keine richtige Vorstellung über die Möglichkeiten aber auch der sich einstellenden Probleme bei Anwendung dieser Sprache entwickeln können. Daher als Anregung: Die Philosophie und der Gebrauch der Sprache sollte etwas ausführlicher sein. Sinn würde eine kurze Beschreibung des Weges oder eines Programmbeispiels für ein Datums (als Singular von Daten) vom Lesen, über das Ändern durch Prozeduren in einer lokalen PL/SQL Variable bis zum Rückschreiben des Datums machen. Transaktionspunkte nicht vergessen. Warum? Weil das die einzig sinnvolle Anwendung für PL/SQL ist. Prinzipiell kann man das auch direkt in SQL erledigen. Aber wer die Kraftakte kennt, weiß warum nach langem Meckern der Nutzer eine prozedurale Sprache "nachgeliefert" und inzwischen zum Standard wurde. PL/SQL bereitete vielen Anwendungsprogrammierern massive Probleme in den Frontends bei der Handhabung komplexer Master-Detail Beziehungen (Fokus- und Trigger-Probleme). Falls der Autor sich damit auskennt, wären allgemeine Hinweise zum Sprachgebrauch, keine Bedienungsanleitung, sinnvoll. Sonstiges was für einen Artikelausbau vielleicht nützlich sein kann:

  1. PL/SQL vor 8.0 eine eigene anderslautende Versionsnummer
  2. Frontends wie SQL/Forms haben eine eigene client-seitige PL-SQL-Maschine zur Bearbeitung prozeduraler Anweisungen. War da nicht auch noch ein eigener SQL-Prozessor innerhalb der Pl/SQL-Maschine neben dem "regulären" SQL-Prozessor ? Grafik über das Zusammenspiel der veschiedenen ausführenden Maschinen?
  3. in verteilten Umgebungen führen verschiedene Versionsstände zu Problemen, oder man schafft einen lokalen/unternehmensweiten "Leistungskatalog". Auch bezüglich entwickelnde Fremdfirma und Kundenumgebung.
  4. Exception-Handling ausführlicher darstellen? Immer ein bisschen problematisch, denn dort müssen auch datenabhängige Fehler abgefangen werden.
  5. Beispiel der Übernahme von Datenbankwerten in Programmvariablen. (siehe auch Einleitung)
  6. konventionelles Debuggen besonders nervig, da dbms_output, der Print-Befehl von PL/SQL, als Parameter nur einen einzigen String kennt. Und Server_output Umgebungsvariable nicht vergessen.
Erfahrungen beruhen auf der mit der RDBMS Version 8 ausgelieferten Versionen. Dummerweise lieferten manuell optimierte Skripte auf späteren Versionen fehlerhafte Ergebnisse. --Thomas 20:08, 2. Jun 2005 (CEST)


Mir erscheint die Behandlung von SQL an dieser Stelle redundant. Die Besonderheiten von PL/SQL wie zum Beispiel packages, exceptions sind dagegen nur sehr knapp beschrieben. Ein Hinweis auf die zahlreichen, nützlichen mitgelieferten Packages wäre gut (z.B. DBMS_JOB, DBMS_LOB, DBMS_UTILITY, UTL_FILE, UTL_SMTP). FG Michael R. 13:58, 16. Mär 2006 (CET)


Hallo, ich finde die Seite ist sehr gut geworden. Ich werde demnächst mal öfters vorbeischauen --Wiki007 18:39, 21. Mär 2006 (CET)

wikibooks Bearbeiten

Hier steht für eine Enzyklopädie schon zu viel zum Thema, dafür in wikibooks zu wenig (http://de.wikibooks.org/wiki/Oracle). MfG --Michael R. 15:41, 6. Jun 2006 (CEST)

Ich schließe mich an. Wir werden in Wikipedia wohl kaum alle Sprachelemente aufzählen und erklären, sondern etwas über die Sprache selbst schreiben (vgl. z.B. C++). Weniger wäre mehr. --EFR 18:28, 8. Feb. 2007 (CET)Beantworten

Es gibt inzwischen ein eigenes Buch für b:PL/SQL in Wikibooks. --Julius-m 18:56, 10. Jan. 2008 (CET)Beantworten

Loop Schleife Bearbeiten

Der Loop wird an der Stelle verlassen, an der das EXIT When steht. Das bedeutet nicht zwingen, dass der Schleifeninhalt einmal ausgeführt wird...

(native) dynamic SQL Bearbeiten

Das Thema Dynamisches SQL wird hier leider überhauptnicht behandelt, obwohl das für den "Unwissenden" sicher interessant wäre (zumindest was das ist, und das man das mit verschieden Paketen nutzen kann) http://download-east.oracle.com/docs/cd/A91202_01/901_doc/appdev.901/a89856/11_dynam.htm --Wookie 15:45, 8. Feb. 2007 (CET)Beantworten

Stimmt, sollte rein. Ich persönlich finde, dass derartige Dinge in der Enzyklopädie als "was ist es und es geht" aufgenommen werden sollten, nicht als "wie geht es". Passt für mich in die Diskussion Wikibooks von oben. --EFR 18:34, 8. Feb. 2007 (CET)Beantworten

Toter Weblink Bearbeiten

Bei mehreren automatisierten Botläufen wurde der folgende Weblink als nicht verfügbar erkannt. Bitte überprüfe, ob der Link tatsächlich unerreichbar ist, und korrigiere oder entferne ihn in diesem Fall!

  • http://asktom.oracle.com
    • In PL/SQL on 2007-06-18 13:24:47, Socket Error: (10060, 'Operation timed out')
    • In PL/SQL on 2007-06-19 15:54:46, Socket Error: (10060, 'Operation timed out')
    • In PL/SQL on 2007-06-25 15:33:04, Socket Error: (10061, 'Connection refused')

--KuhloBot 17:33, 25. Jun. 2007 (CEST)Beantworten

Gerade war der Link erreichbar. asktom ist unter Entwicklern geschätzt. FG Michael R. 00:28, 26. Jun. 2007 (CEST)Beantworten

Was noch fehlt Bearbeiten

Folgende Eigenschaften scheinen mir sehr wesentlich von PL/SQL zu sein, sie fehlen aber noch in dem Artikel. Einige Punkte sind bereits in den übrigen Diskussions-Beiträgen erwähnt. Diese folgende Aufzählung ist als to-do-Liste für mich und andere gedacht:

  • Exception-Handling
    • Vordefinierte Exceptions
    • Selbst definierte Exceptions für bestimmte SQL-Codes
    • Selbst definierte Exceptions für fachliche Ausnahmen
  • komplexe Datentypen
    • Tabellen eindimensional, mehrdimensional, Kombination mit Records
  • Möglichkeiten zur Corsor-Definition
    • Explizite Deklaration im Deklarationsteil
    • implizit im Anweisungsteil z.B. im Kopf einer FOR-Schleife
    • dynamische Cursor, die auch als Parameter an Prozeduren und Funktionen übergeben werden können
    • Corsor mit Parametern
  • Prozeduren, Funktionen
    • Zugriffsberechtigungen beim Aufruf einer Prozedur / Funktion
    • Autonome Prozeduren (ab 10g)
  • Packages
    • Overloading von Prozeduren und Funktionen in einem Package
  • Trigger
  • Dynamisches SQL
    • Nutzung für administrative Tätigkeiten (Backup, Statistiken generieren, Reorg)
  • Übersicht über die mit jedem Release umfangreicher werdenden Packages, die zum Lieferumfang gehören z.B. LOB-, XML-Verarbeitung sowie HTML-Generierung
  • Verschlüsselung des Quellcodes
  • Compiler-Optionen z.B.
    • Generierung von C-Code vor der Ausführung zur Laufzeitoptimierung
  • Objektrelationale Datentypen (Datentypen mit Methoden zu ihrer Verarbeitung)
    • Vererbung

Dabei sollte nicht in erster Linie die vollständige und korrekte Syntax dieser Konstrukte beschrieben werden, sondern nur die dahinter stehenden Konzepte dargelegt werden. Wer gerne eine ausführliche Syntaxbeschreibung verfassen will, der sollte das in wikibooks:PL/SQL tun. Alle Autoren sollten darauf achten, dass sich der Wikipedia-Artikel und das Lehrbuch in wikibooks inhaltlich nicht überschneiden, sondern sinnvoll ergänzen. --Julius-m 18:54, 10. Jan. 2008 (CET)Beantworten

Befehle SELECT, INSERT, UPDATE Bearbeiten

Die folgenden drei Abschnitte habe ich aus dem Artikel entfernt. Damit sie nicht gleich weg sind, habe ich sie erst mal hier hin gestellt.

Begründung: Diese Befehle sind Bestandteil der Abfragensprache SQL. Daher gehört die Erläuterung der SQL-Befehle in den Artikel SQL rein. Im Artikel PL/SQL sollte nur ein Verweis stehen, dass alle SQL-Sprachelemente verwendet werden können und wie sie zu gebrauchen sind (Single-Select, Cursor, dynamisches SQL) Wenn man dann noch ein par Hinweise über SQL-Code-Abfrage, Exception-Handling und Indikatorvariablen hinzufügt, dann sollte das dem lexikographischen Anspruch für den PL/SQL-Artikel genügen. Alles weitere kann man ja in wikibooks:PL/SQL eintragen. Ein Hinweis auf den Artikel Embedded SQL steht bereits unter Siehe auch. Diesen Hinweis könnte man vielleicht in den Text verlegen mit einer kurzen Zusammenfassung dieses Themas.

Die Löschung dieser drei Abschnitte wurde auch schon von HP (siehe oben) am 14. Mai 2005 vorgeschlagen. In den fast drei Jahren seit dem hat keiner Einspruch erhoben. --Julius-m 12:38, 18. Jan. 2008 (CET)Beantworten

Und du wirst auch von mir keinen Einspruch hören, denn du hast vollkommen recht. Ich 'versteck' die Statements in der History. ;-) -- Gnu1742 13:58, 18. Jan. 2008 (CET)Beantworten

CASE-Anweisung Bearbeiten

und gleich noch zwei Unterabschnitte, die ich aus dem Artikel entfernt habe. Denn CASE ist Bestandteil des SELECT-Befehls und damit nichts spezifisches der Programmiersprache PL/SQL. --Julius-m 22:48, 26. Sep. 2009 (CEST)Beantworten

Simple CASE Bearbeiten

 CASE <variable>
   WHEN <Ausdruck1> THEN <ausführen>;
   WHEN <Ausdruck2> THEN <ausführen>;
   .
   WHEN <Ausdruckn> THEN <ausführen>;
   ELSE <ausführen>;
 END CASE;
 /

CASE vergleicht eine Variable mit einem Ausdruck und führt bei der ersten Übereinstimmung einen bestimmten Befehl aus und endet dann.

Searched CASE Bearbeiten

 CASE 
   WHEN <variable> < <Wert> THEN <ausführen>;
   WHEN <variable> between <Wert> and <Wert> THEN <ausführen>;
   .
   WHEN <Vergleich> THEN <ausführen>;
   ELSE <ausführen>;
 END CASE;
 /

In der WHEN-Klausel wird ein (ansonsten beliebiger) Ausdruck ausgewertet, wobei das Ergebnis ein boolescher Wert (also TRUE oder FALSE) sein muss.

Das CASE-Statement führt den ersten THEN-Befehl aus, dessen WHEN-Ausdruck TRUE war und endet dann. Ist dies in keiner WHEN-Klausel der Fall, so wird der ELSE-Befehl (sofern vorhanden) durchgeführt.

CASE bei Oracle

Artikel gleicht Tutorial Bearbeiten

Guten Tag

Ich bin gerade daran, PL/SQL zu lernen, und fand diesen Artikel einen hervorragenden Kurzüberblick im Sinne eines Tutorials. Aber um ehrlich zu sein: Soll Wikipedia das überhaupt sein? Wie ich oben in der Disk schon gelesen habe, wäre es sinnvoll, die Details der Sprache in das Wikibook zu kopieren. Hier würde ich nur die Inhalte belassen, die charakteristisch für PL/SQL sind, z.B. "Aufbau", "Exception handling" und vorallem die Beispiele wie SQL in den Quelltext eingebunden wird. Die restlichen Abschnitte verschieben und dafür könnte bei Gelegenheit jemand etwas über die Geschichte etc. schreiben...

Gruss, --Chiccodoro 09:19, 24. Mär. 2010 (CET)Beantworten

Geeignet für größeres Softwaresystem? Bearbeiten

wie gut ist PL/SQL für größere Softwaresysteme geeignet? Angesichts der Tatsache, dass keine baumartige Package Struktur möglich ist, sind die Möglichkeiten stark eingeschränkt. Die einzige Möglichkeit dies zu entschärfen, liegt darin, über Namensvergabe eine Struktur aufzubauen. Ich kenne eine PL/SQL System mit etwa 30 Packages und je Package etwa 30 Prozeduren. Hier tendieren die Prozeduren recht lang zu werden und setzen das Prinzip der Modularisierung schlecht um. Ich führe das allein darauf zurück, dass PL/SQL wenig Strukturierungsmöglichkeiten bietet. Ein Softwaresystem z. B. aus 100.000 Funktionen (Objektmethoden), sehe ich deshalb in PL/SQL als nicht adäquat umsetzbar an.

Ich kenne eine Software, die auf PLSQL basiert und mit über 2300 Packages arbeitet, und sich verkauft. -- sk (Diskussion) 14:15, 6. Nov. 2013 (CET)Beantworten

Einfluss von COBOL? Bearbeiten

Woher kommt bitte da ein Einfluss von COBOL und PL/I?

PL/SQL bedient sich syntaktisch fast ausschliesslich bei Ada (und damit indirekt bei Pascal und vielleicht Algol68), Der Rest ist SQL. Selbst das grausliche GOTO kommt m.W. von Ada. Im gesamten Artikel gibt es dann auch keinen Bezug mehr zu den beiden Sprachen. --Dr. Tux (Diskussion) 11:50, 28. Jul. 2017 (CEST)Beantworten

Nachdem das 6 Jahre lang niemand beantworten konnte, hab ich den Header geändert. --Dr. Tux (Diskussion) 22:54, 24. Jun. 2023 (CEST)Beantworten