I Oracle Database er CHARTOROWID()
funktion konverterer en strengværdi til ROWID
datatype.
Syntaks
Syntaksen ser sådan ud:
CHARTOROWID(char)
Hvor char
er en af CHAR
, VARCHAR2
, NCHAR
eller NVARCHAR2
datatyper.
Eksempel
Her er et eksempel til demonstration:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Resultat:
AAATiDAAMAAALKzABa
Selvom dette er et hurtigt og nemt eksempel, viser det os ikke, at slutresultatet er af typen ROWID
.
Vi kan dog finde ud af det sådan her:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Resultat:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Her brugte jeg DUMP()
funktion for at få den interne repræsentation af de første fem tegn.
Men vigtigst af alt, denne funktion returnerer også type-id'et. Den første er 96
, som er type-id'et for CHAR
og NCHAR
, og den anden er 69
, som er type-id'et for ROWID
.
Så dette viser, at CHARTOROWID()
funktion konverterer faktisk en streng til en ROWID
.
Et databaseeksempel
Her er et eksempel, der returnerer en række i en databasetabel baseret på en given ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Resultat:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Ugyldig ROWID
Videregivelse af en ugyldig ROWID
resulterer i en fejl:
SELECT CHARTOROWID('oops')
FROM DUAL;
Resultat:
Error report - ORA-01410: invalid ROWID
Nul-argument
Hvis argumentet er null
, resultatet er null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Resultat:
null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når der opstår en null-værdi som et resultat af en SQL SELECT
erklæring.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Ugyldigt argumentantal
Ringer til CHARTOROWID()
uden nogen argumenter resulterer i en fejl:
SELECT CHARTOROWID()
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Og at sende for mange argumenter resulterer også i en fejl:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Resultat:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"