Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função CHARTOROWID() no Oracle


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"