Dans Oracle Database, le CHARTOROWID()
la fonction convertit une valeur de chaîne en ROWID
type de données.
Syntaxe
La syntaxe ressemble à ceci :
CHARTOROWID(char)
Où char
est l'un des CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
types de données.
Exemple
Voici un exemple pour illustrer :
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Résultat :
AAATiDAAMAAALKzABa
Bien qu'il s'agisse d'un exemple simple et rapide, il ne nous montre pas que le résultat final est de type ROWID
.
Cependant, nous pouvons le découvrir comme ceci :
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Résultat :
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Ici, j'ai utilisé le DUMP()
fonction pour obtenir la représentation interne des cinq premiers caractères.
Mais surtout, cette fonction renvoie également l'ID de type. Le premier est 96
, qui est l'ID de type pour CHAR
et NCHAR
, et le second est 69
, qui est l'ID de type pour ROWID
.
Cela démontre donc que le CHARTOROWID()
la fonction convertit en fait une chaîne en un ROWID
.
Un exemple de base de données
Voici un exemple qui renvoie une ligne dans une table de base de données, basée sur un ROWID
donné :
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Résultat :
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
ROWID
non valide
Passer un ROWID
invalide génère une erreur :
SELECT CHARTOROWID('oops')
FROM DUAL;
Résultat :
Error report - ORA-01410: invalid ROWID
Argument nul
Si l'argument est null
, le résultat est null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Résultat :
null
Par défaut, SQLcl et SQL*Plus renvoient un espace vide chaque fois qu'une valeur nulle se produit à la suite d'un SELECT
SQL déclaration.
Cependant, vous pouvez utiliser SET NULL
pour spécifier une autre chaîne à renvoyer. Ici, j'ai précisé que la chaîne null
doit être retourné.
Nombre d'arguments non valides
Appelant CHARTOROWID()
sans aucun argument génère une erreur :
SELECT CHARTOROWID()
FROM DUAL;
Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Et passer trop d'arguments entraîne également une erreur :
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Résultat :
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"