Viele Sprachen verwenden Zeichen mit Akzenten. Da diese Zeichen nicht im ASCII-Zeichensatz enthalten sind, ist es schwierig, Code zu schreiben, der solche Zeichen enthält, ohne die entsprechenden Unicode-Werte nachzuschlagen oder einen Unicode-Editor zu verwenden.
Oracle9i hat die Funktion COMPOSE eingeführt, mit der man einen Text aus mehreren Unicode-Zeichen zusammensetzen kann. Das bedeutet, dass die Funktion einen Buchstaben wie „a“ (Unicode-Zeichen 0097) und ein damit zu kombinierendes Zeichen wie den Gravis-Akzent (Unicode-Zeichen 0300) übernimmt und daraus ein einzelnes Zeichen erzeugt, das die Kombination der beiden Bestandteile ist.
COMPOSE verwendet spezielle Kombinationszeichen, die Bestandteil des Unicode-Standards sind, statt der entsprechenden Interpunktionszeichen aus dem ASCII-Zeichensatz. Das Ergebnis sollte Unicode-Zeichen 00E0 sein (ein kleines „a“ mit einem Gravis-Akzent).
Die gängigsten Kombinationszeichen in Unicode sind:
- U+0300: Gravis-Akzent ( ` )
- U+0301: Akut-Akzent ( ‚ )
- U+0302: Zirkumflex-Akzent (^)
- U+0303: Tilde (~)
- U+0308: Umlaut
Oft ist es schwierig, Unicode-Zeichen ohne spezielle Software oder Tastaturtreiber über die Tastatur einzugeben. Daher kann man die Unicode-Sequenz in reinem ASCII-Text mithilfe der Funktion UNISTR eingeben. Diese Funktion übernimmt eine Reihe von ASCII-Zeichen und erzeugt daraus eine Sequenz aus Unicode-Zeichen im nationalen Zeichensatz (welcher normalerweise entweder als 16-Bit-Unicode oder UTF-8 installiert ist). Ähnlich wie Java verwendet sie hexadezimale Escape-Sequenzen, um alle Nicht-ASCII-Zeichen zuzuordnen.
Um die Sequenz für „a“ gefolgt vom Kombinationszeichen für den Gravis-Akzent einzugeben, kann man UNISTR(‚a 300‘) verwenden, anstatt das Zeichen direkt in den Code einzufügen. Diese Funktion arbeitet korrekt mit jedem Zeichensatz und jeder Datenbank, die über einen Unicode-basierten nationalen Zeichensatz verfügt. Man kann der UNISTR-Funktion mehr als ein Kombinationszeichen übergeben oder eine Mischung aus ASCII- und Unicode-Escape-Sequenzen verwenden. Ein Beispiel:
Wenn man das Ergebnis dieser Funktion mit COMPOSE kombiniert, kann man ein Unicode-Zeichen erzeugen, ohne jeden einzelnen Wert nachschlagen zu müssen: