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

Função ROWIDTOCHAR() no Oracle


No banco de dados Oracle, o ROWIDTOCHAR() função converte um ROWID valor para VARCHAR2 tipo de dados.

Sintaxe


A sintaxe fica assim:
ROWIDTOCHAR(rowid)

Exemplo


Aqui está um exemplo:
SELECT ROWIDTOCHAR('AAATiBAAMAAAAIDAAE')
FROM DUAL;

Resultado:
AAATiBAAMAAAAIDAAE

O resultado da conversão é sempre de 18 caracteres.

E aqui está um dump do resultado quando comparado ao CHARTOROWID() função (que retorna um ROWID valor dos dados do caractere):
SELECT 
    DUMP(CHARTOROWID('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "CHARTOROWID",
    DUMP(ROWIDTOCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTOCHAR"
FROM DUAL;

Resultado:
                 CHARTOROWID              ROWIDTOCHAR 
____________________________ ________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=18: A,A,A,T   

Um ID de tipo de 69 significa que é de ROWID tipo de dados e um ID de tipo de 1 significa que é ou VARCHAR2 ou NVARCHARCHAR2 .

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 ROWIDTOCHAR(ROWID) LIKE '%KzABa';

Resultado:
                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Argumento nulo

Se o argumento for null , o resultado é null :

SET NULL 'null';
SELECT ROWIDTOCHAR(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 ROWIDTOCHAR() sem nenhum argumento resulta em um erro:

SELECT ROWIDTOCHAR()
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 ROWIDTOCHAR('a', 'b')
FROM DUAL;

Resultado:

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