В Oracle Database, CHARTOROWID()
функцията преобразува стойност на низ в ROWID
тип данни.
Синтаксис
Синтаксисът е така:
CHARTOROWID(char)
Където char
е един от CHAR
, VARCHAR2
, NCHAR
или NVARCHAR2
типове данни.
Пример
Ето пример за демонстрация:
SELECT
CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;
Резултат:
AAATiDAAMAAALKzABa
Въпреки че това е бърз и лесен пример, той не ни показва, че крайният резултат е от тип ROWID
.
Въпреки това можем да разберем по следния начин:
SELECT
DUMP('AAATiDAAMAAALKzABa', 17, 1, 5) AS "r1",
DUMP(CHARTOROWID('AAATiDAAMAAALKzABa'), 17, 1, 5) AS "r2"
FROM DUAL;
Резултат:
r1 r2 ___________________________ _______________________________ Typ=96 Len=18: A,A,A,T,i Typ=69 Len=10: ^@,^A,8,83,^C
Тук използвах DUMP()
функция, за да получите вътрешното представяне на първите пет знака.
Но важното е, че тази функция също връща идентификатора на типа. Първият е 96
, което е идентификаторът на типа за CHAR
и NCHAR
, а вторият е 69
, което е идентификаторът на типа за ROWID
.
Така че това демонстрира, че CHARTOROWID()
функцията всъщност преобразува низ в ROWID
.
Пример за база данни
Ето пример, който връща ред в таблица на база данни въз основа на даден ROWID
:
SELECT
ROWID,
FIRST_NAME,
LAST_NAME
FROM EMPLOYEES
WHERE ROWID = CHARTOROWID('AAATiDAAMAAALKzABa');
Резултат:
ROWID FIRST_NAME LAST_NAME _____________________ _____________ ____________ AAATiDAAMAAALKzABa Timothy Gates
Невалиден ROWID
Подаване на невалиден ROWID
води до грешка:
SELECT CHARTOROWID('oops')
FROM DUAL;
Резултат:
Error report - ORA-01410: invalid ROWID
Нулев аргумент
Ако аргументът е null
, резултатът е null
:
SET NULL 'null';
SELECT CHARTOROWID(null)
FROM DUAL;
Резултат:
null
По подразбиране SQLcl и SQL*Plus връщат празно пространство, когато се появи нулева стойност в резултат на SQL SELECT
изявление.
Въпреки това, можете да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Невалиден брой аргументи
Извикване на CHARTOROWID()
без никакви аргументи води до грешка:
SELECT CHARTOROWID()
FROM DUAL;
Резултат:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
И предаването на твърде много аргументи също води до грешка:
SELECT CHARTOROWID('AAATiDAAMAAALKzABa', 'AAATiDAAMAAALKzABa')
FROM DUAL;
Резултат:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"