No banco de dados Oracle, o
CHARTOROWID()
função converte um valor de string para ROWID
tipo de dados. Sintaxe
A sintaxe fica assim:
CHARTOROWID(char)
Onde
char
é um dos CHAR
, VARCHAR2
, NCHAR
, ou NVARCHAR2
tipos de dados. Exemplo
Segue um exemplo para demonstrar:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Resultado:
AAATiDAAMAAALKzABa
Embora este seja um exemplo rápido e fácil, ele não nos mostra que o resultado final é do tipo
ROWID
. No entanto, podemos descobrir assim:
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
Aqui, usei o
DUMP()
função para obter a representação interna dos primeiros cinco caracteres. Mas o mais importante é que essa função também retorna o ID do tipo. O primeiro é
96
, que é o ID do tipo para CHAR
e NCHAR
, e o segundo é 69
, que é o ID do tipo para ROWID
. Então isso demonstra que o
CHARTOROWID()
a função de fato converte uma string em um ROWID
. Um exemplo de banco de dados
Aqui está um exemplo que retorna uma linha em uma tabela de banco de dados, com base em um determinado
ROWID
:SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Resultado:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
ROWID
inválido
Passando um ROWID
inválido resulta em um erro:
SELECT CHARTOROWID('oops')
FROM DUAL;
Resultado:
Error report - ORA-01410: invalid ROWID
Argumento nulo
Se o argumento for null
, o resultado é null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Resultado:
null
Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que um valor nulo ocorre como resultado de um SQL SELECT
demonstração.
No entanto, você pode usar SET NULL
para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null
deve ser devolvido.
Contagem de argumentos inválidos
Chamando CHARTOROWID()
sem nenhum argumento resulta em um erro:
SELECT CHARTOROWID()
FROM DUAL;
Resultado:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
E passar muitos argumentos também resulta em um erro:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Resultado:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"