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 proCHARaNCHARa 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ý
ROWIDPředávání neplatného
ROWIDvý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
SELECTobjeví hodnota null prohlášení.Můžete však použít
SET NULLurčit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnullby 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ů"