Oracle
 sql >> база данни >  >> RDS >> Oracle

CHARTOROWID() Функция в Oracle

В 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"

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - ORA-06502:PL/SQL:числова или стойностна грешка (DBMS_OUTPUT)

  2. Функция LOCALTIMESTAMP() в Oracle

  3. GWFG в Oracle RAC

  4. Как да използвате тип BOOLEAN в израза SELECT

  5. Заключване на Liquibase - причини?