V databázi Oracle je to COMPOSE()
funkce vrací výsledek použití kanonické kompozice Unicode, jak je popsáno v definici standardu Unicode D117, na svůj řetězcový argument.
Je to opak DECOMPOSE()
funkce.
Syntaxe
Syntaxe vypadá takto:
COMPOSE(char)
Kde char
je jedním z CHAR
, VARCHAR2
, NCHAR
nebo NVARCHAR2
datové typy.
Příklad
Zde je příklad k demonstraci:
SELECT
COMPOSE('a' || UNISTR('\0303'))
FROM DUAL;
Výsledek:
ã
Znaky jiné než Unicode
Pokud znaková sada argumentu není jednou ze znakových sad Unicode, argument je vrácen nezměněný.
Příklad:
SELECT COMPOSE( 'a' )
FROM DUAL;
Výsledek:
a
Nulový argument
Pokud je argument null
, výsledkem je null
:
SET NULL 'null';
SELECT COMPOSE(null)
FROM DUAL;
Výsledek:
null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo, kdykoli se v důsledku příkazu SQL SELECT
objeví hodnota null prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Neplatný počet argumentů
Volání COMPOSE()
bez jakýchkoli argumentů vede k chybě:
SELECT COMPOSE()
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
A předání příliš mnoha argumentů také vede k chybě:
SELECT COMPOSE('a', 'b')
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"