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"