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"