[a-zA-Z][a-zA-Z0-9$_#]{0,29}
* Deklarierung/Initialisierung in ''DECLARE'', Zuweisung in ''BEGIN'' * ''identifier [CONSTANT] datatype [NOT NULL] [:= | DEFAULT expr];'' * String-Begrenzung: ''q'!Das ist ein Text!''' * Typen * Scalar: ''CHAR, VARCHAR, LONG, INTEGER, BOOLEAN, DATE'' etc. * Composite: Zusammengesetzte Variablen aus mehrere Datentypen * Reference * LOB: Fotos, Filme etc. * Nicht-PL/SQL: Bind variables * Host-Variablen, die mit ''VARIABLE'' deklariert werden und mit einem führenden '':'' referenziert werden * ''SET AUTOPRINT ON'' * Substitution Variables * referenziert mit führendem ''&'': Eingabe zur Laufzeit * ''ACCEPT varname PROMPT 'Text''' * User Variable: deklariert mit ''DEFINE'', referenziert mit ''&'' * ''%TYPE''-Attribut: Datentyp einer Spalte/Variable übernehmen (''identifier table.column_name%TYPE;'') * Mögliche Boolean-Werte: ''TRUE, FALSE, NULL'' (!)
* Lexikalische Einheiten
DECODE
, GROUP
-FunktionenINTO
wird benötigtSQL%FOUND
, SQL%NOTFOUND
, SQL%ROWCOUNT
* Explizit: werden vom Programmierer definiert und verwendet
* Kontrollstrukturen
IF THEN - ELSIF - ELSE
'* ''CASE'' Expression <> ''CASE'' Statement * Behandlung von NULL bei booleschen Operationen * Schleifen * ''LOOP - EXIT WHEN - END LOOP'' * ''WHILE LOOP - END LOOP'' * ''FOR IN LOOP - END LOOP'' * Nested Loops: Labels ''<<label_name>>''
* Komplexe Datentypen
INDEX BY
)TYPE
%ROWTYPE
'INDEX BY
tables / assoziative Arraystable(1)
EXISTS, COUNT, FIRST, LAST, PRIOR, NEXT, DELETE
* VARRAYs und Nested Tables
* Cursors
OPEN, [LOOP], FETCH, [EXIT], CLOSE
CURSOR FOR
macht alles automatisch%ISOPEN, %NOTFOUND, %FOUND, %ROWCOUNT