In Oracle Database, de CHARTOROWID()
functie converteert een tekenreekswaarde naar ROWID
gegevenstype.
Syntaxis
De syntaxis gaat als volgt:
CHARTOROWID(char)
Waar char
is een van CHAR
, VARCHAR2
, NCHAR
, of NVARCHAR2
gegevenstypen.
Voorbeeld
Hier is een voorbeeld om te demonstreren:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Resultaat:
AAATiDAAMAAALKzABa
Hoewel dit een snel en eenvoudig voorbeeld is, laat het ons niet zien dat het eindresultaat van het type ROWID
is. .
We kunnen er echter als volgt achter komen:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Resultaat:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Hier gebruikte ik de DUMP()
functie om de interne representatie van de eerste vijf tekens te krijgen.
Maar belangrijker is dat deze functie ook het type ID retourneert. De eerste is 96
, wat het type ID is voor CHAR
en NCHAR
, en de tweede is 69
, wat het type ID is voor ROWID
.
Dit toont dus aan dat de CHARTOROWID()
functie converteert in feite een string naar een ROWID
.
Een databasevoorbeeld
Hier is een voorbeeld dat een rij retourneert in een databasetabel, gebaseerd op een gegeven ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Resultaat:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Ongeldige ROWID
Een ongeldige ROWID
doorgeven resulteert in een fout:
SELECT CHARTOROWID('oops')
FROM DUAL;
Resultaat:
Error report - ORA-01410: invalid ROWID
Nullargument
Als het argument null
is , het resultaat is null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Resultaat:
null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer een null-waarde optreedt als resultaat van een SQL SELECT
verklaring.
U kunt echter SET NULL
gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Ongeldig aantal argumenten
Belt CHARTOROWID()
zonder argumenten resulteert in een fout:
SELECT CHARTOROWID()
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
En het doorgeven van te veel argumenten resulteert ook in een fout:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Resultaat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"