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

Função ROWIDTONCHAR() no Oracle


No banco de dados Oracle, o ROWIDTONCHAR() função converte um ROWID valor para NVARCHAR2 tipo de dados

É semelhante ao ROWIDTOCHAR() função, exceto que ROWIDTOCHAR() converte um ROWID valor para VARCHAR2 tipo de dados.

Sintaxe


A sintaxe fica assim:
ROWIDTONCHAR(rowid)

Exemplo


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

Resultado:
AAATiBAAMAAAAIDAAE

O resultado da conversão está sempre no conjunto de caracteres nacional e tem 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(ROWIDTONCHAR('AAATiBAAMAAAAIDAAE'), 17, 1, 4) AS "ROWIDTONCHAR"
FROM DUAL;

Resultado:
                 CHARTOROWID               ROWIDTONCHAR 
____________________________ __________________________ 
Typ=69 Len=10: ^@,^A,8,81    Typ=1 Len=36: ^@,A,^@,A   

Um ID de tipo de 69 significa que é de ROWID tipo de dados e um ID de tipo de 1 significa que é 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 ROWIDTONCHAR(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 ROWIDTONCHAR(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 ROWIDTONCHAR() sem nenhum argumento resulta em um erro:

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

Resultado:

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