Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja CHARTOROWID() w Oracle

W bazie danych Oracle CHARTOROWID() funkcja konwertuje wartość ciągu na ROWID typ danych.

Składnia

Składnia wygląda tak:

CHARTOROWID(char)

Gdzie char jest jednym z CHAR , VARCHAR2 , NCHAR lub NVARCHAR2 typy danych.

Przykład

Oto przykład do zademonstrowania:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;

Wynik:

AAATiDAAMAAALKzABa

Chociaż jest to szybki i łatwy przykład, nie pokazuje nam, że wynik końcowy jest typu ROWID .

Możemy się jednak dowiedzieć tak:

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

Wynik:

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

Tutaj użyłem DUMP() funkcja, aby uzyskać wewnętrzną reprezentację pierwszych pięciu znaków.

Ale co ważne, ta funkcja zwraca również identyfikator typu. Pierwszy to 96 , który jest identyfikatorem typu dla CHAR i NCHAR , a drugi to 69 , który jest identyfikatorem typu dla ROWID .

To pokazuje, że CHARTOROWID() funkcja faktycznie konwertuje ciąg do ROWID .

Przykład bazy danych

Oto przykład, który zwraca wiersz w tabeli bazy danych na podstawie podanego ROWID :

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

Wynik:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

Nieprawidłowy ROWID

Przekazanie nieprawidłowego ROWID powoduje błąd:

SELECT CHARTOROWID('oops')
FROM DUAL;

Wynik:

Error report -
ORA-01410: invalid ROWID

Argument zerowy

Jeśli argument jest null , wynik to null :

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

Wynik:

null

Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku SELECT wystąpi wartość null oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie CHARTOROWID() bez żadnych argumentów powoduje błąd:

SELECT CHARTOROWID()
FROM DUAL;

Wynik:

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

Przekazywanie zbyt wielu argumentów również skutkuje błędem:

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

Wynik:

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć różnice w formacie B/W TIMESTAMP w Oracle?

  2. Kopia zapasowa bazy danych Oracle:Rodzaj kopii zapasowej i strategia tworzenia kopii zapasowych

  3. ORA-00604 ORA-12705

  4. Błąd SQL:ORA-01861:literał nie pasuje do ciągu formatu 01861

  5. cx_Oracle i obsługa wyjątków — dobre praktyki?