V databázi Oracle je to CHARTOROWID()
funkce převede hodnotu řetězce na ROWID
datový typ.
Syntaxe
Syntaxe vypadá takto:
CHARTOROWID(char)
Kde char
je jedním z CHAR
, VARCHAR2
, NCHAR
nebo NVARCHAR2
datové typy.
Příklad
Zde je příklad k demonstraci:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Výsledek:
AAATiDAAMAAALKzABa
Ačkoli se jedná o rychlý a snadný příklad, neukazuje nám, že konečný výsledek je typu ROWID
.
Můžeme to však zjistit takto:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Výsledek:
r1 r2 ____________________________ _______________________________ Typ=96 Len=18:A,A,A,T,i Typ=69, ^ C,8,8, ^ 8:Zde jsem použil
DUMP()
funkcí získat vnitřní reprezentaci prvních pěti znaků.Ale co je důležité, tato funkce také vrací ID typu. První je
96
, což je ID typu proCHAR
aNCHAR
a druhý je69
, což je ID typu proROWID
.Takže to ukazuje, že
CHARTOROWID()
Funkce ve skutečnosti převádí řetězec naROWID
.Příklad databáze
Zde je příklad, který vrací řádek v databázové tabulce na základě daného
ROWID
:SELECT ROWID, FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Výsledek:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy GatesNeplatný
ROWID
Předávání neplatného
ROWID
výsledkem je chyba:SELECT CHARTOROWID('oops') FROM DUAL;
Výsledek:
Chybové hlášení -ORA-01410:neplatný ROWIDNulový argument
Pokud je argument
null
, výsledkem jenull
:SET NULL 'null'; SELECT CHARTOROWID(null) FROM DUAL;
Výsledek:
nullVe 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ězecnull
by měl být vrácen.Neplatný počet argumentů
Volání
CHARTOROWID()
bez jakýchkoli argumentů vede k chybě:SELECT CHARTOROWID() FROM DUAL;
Výsledek:
Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"A předání příliš mnoha argumentů také vede k chybě:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa') FROM DUAL;
Výsledek:
Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"