sql >> Base de Datos >  >> RDS >> Oracle

Función CHARTOROWID() en Oracle

En Oracle Database, el CHARTOROWID() función convierte un valor de cadena a ROWID tipo de datos.

Sintaxis

La sintaxis es así:

CHARTOROWID(char)

Donde char es uno de CHAR , VARCHAR2 , NCHAR o NVARCHAR2 tipos de datos.

Ejemplo

Aquí hay un ejemplo para demostrarlo:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;

Resultado:

AAATiDAAMAAALKzABa

Aunque este es un ejemplo rápido y sencillo, no nos muestra que el resultado final sea del tipo ROWID .

Sin embargo, podemos averiguarlo así:

SELECT 
    DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
    DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;

Resultado:

                         r1                              r2 
___________________________ _______________________________ 
Typ=96 Len=18: A,A,A,T,i    Typ=69 Len=10: ^@,^A,8,83,^C   

Aquí, usé DUMP() para obtener la representación interna de los primeros cinco caracteres.

Pero lo más importante, esta función también devuelve el ID de tipo. El primero es 96 , que es el ID de tipo para CHAR y NCHAR , y el segundo es 69 , que es el ID de tipo para ROWID .

Esto demuestra que CHARTOROWID() de hecho, la función convierte una cadena en un ROWID .

Un ejemplo de base de datos

Aquí hay un ejemplo que devuelve una fila en una tabla de base de datos, según un ROWID dado. :

SELECT 
    ROWID,
    FIRST_NAME,
    LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');

Resultado:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

ROWID no válido

Pasar un ROWID no válido da como resultado un error:

SELECT CHARTOROWID('oops')
FROM DUAL;

Resultado:

Error report -
ORA-01410: invalid ROWID

Argumento nulo

Si el argumento es null , el resultado es null :

SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;

Resultado:

null

De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que se produce un valor nulo como resultado de un SQL SELECT declaración.

Sin embargo, puede usar SET NULL para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null debe ser devuelto.

Recuento de argumentos no válidos

Llamando a CHARTOROWID() sin ningún argumento da como resultado un error:

SELECT CHARTOROWID()
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"

Y pasar demasiados argumentos también da como resultado un error:

SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;

Resultado:

SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"