Oracle
 sql >> Database >  >> RDS >> Oracle

CHARTOROWID() Funzione in Oracle

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"