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"