In Oracle Database, il CHARTOROWID()
la funzione converte un valore stringa in ROWID
tipo di dati.
Sintassi
La sintassi è questa:
CHARTOROWID(char)
Dove char
è uno di CHAR
, VARCHAR2
, NCHAR
o NVARCHAR2
tipi di dati.
Esempio
Ecco un esempio da dimostrare:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Risultato:
AAATiDAAMAAALKzABa
Sebbene questo sia un esempio semplice e veloce, non ci mostra che il risultato finale è di tipo ROWID
.
Tuttavia, possiamo scoprirlo in questo modo:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Risultato:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Qui, ho usato il DUMP()
funzione per ottenere la rappresentazione interna dei primi cinque caratteri.
Ma soprattutto, questa funzione restituisce anche l'ID del tipo. Il primo è 96
, che è l'ID del tipo per CHAR
e NCHAR
e il secondo è 69
, che è l'ID del tipo per ROWID
.
Quindi questo dimostra che CHARTOROWID()
la funzione converte infatti una stringa in un ROWID
.
Un esempio di database
Ecco un esempio che restituisce una riga in una tabella di database, in base a un dato ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Risultato:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
ROWID
non valido
Trasmissione di un ROWID
non valido restituisce un errore:
SELECT CHARTOROWID('oops')
FROM DUAL;
Risultato:
Error report - ORA-01410: invalid ROWID
Argomento nullo
Se l'argomento è null
, il risultato è null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Risultato:
null
Per impostazione predefinita, SQLcl e SQL*Plus restituiscono uno spazio vuoto ogni volta che si verifica un valore nullo come risultato di un SQL SELECT
dichiarazione.
Tuttavia, puoi usare SET NULL
per specificare una stringa diversa da restituire. Qui ho specificato che la stringa null
deve essere restituito.
Conteggio argomenti non valido
Chiamata a CHARTOROWID()
senza alcun argomento genera un errore:
SELECT CHARTOROWID()
FROM DUAL;
Risultato:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
E anche passare troppi argomenti provoca un errore:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Risultato:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"