Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm CHARTOROWID () trong Oracle

Trong Cơ sở dữ liệu Oracle, CHARTOROWID() hàm chuyển đổi giá trị chuỗi thành ROWID kiểu dữ liệu.

Cú pháp

Cú pháp như sau:

CHARTOROWID(char)

Ở đâu char là một trong CHAR , VARCHAR2 , NCHAR hoặc NVARCHAR2 kiểu dữ liệu.

Ví dụ

Dưới đây là một ví dụ để chứng minh:

SELECT 
    CHARTOROWID('AAATiDAAMAAALKzABa')
FROM DUAL;

Kết quả:

AAATiDAAMAAALKzABa

Mặc dù đây là một ví dụ nhanh chóng và dễ dàng, nhưng nó không cho chúng ta thấy rằng kết quả cuối cùng thuộc loại ROWID .

Tuy nhiên, chúng ta có thể tìm hiểu như sau:

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

Kết quả:

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

Ở đây, tôi đã sử dụng DUMP() hàm để lấy biểu diễn bên trong của năm ký tự đầu tiên.

Nhưng quan trọng, hàm này cũng trả về ID kiểu. Cái đầu tiên là 96 , là ID loại cho CHARNCHAR và cái thứ hai là 69 , là ID loại cho ROWID .

Vì vậy, điều này chứng tỏ rằng CHARTOROWID() trên thực tế, hàm chuyển đổi một chuỗi thành ROWID .

Một ví dụ về cơ sở dữ liệu

Dưới đây là một ví dụ trả về một hàng trong bảng cơ sở dữ liệu, dựa trên một ROWID nhất định :

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

Kết quả:

                ROWID    FIRST_NAME    LAST_NAME 
_____________________ _____________ ____________ 
AAATiDAAMAAALKzABa    Timothy       Gates       

ROWID không hợp lệ

Truyền ROWID không hợp lệ dẫn đến lỗi:

SELECT CHARTOROWID('oops')
FROM DUAL;

Kết quả:

Error report -
ORA-01410: invalid ROWID

Đối số rỗng

Nếu đối số là null , kết quả là null :

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

Kết quả:

null

Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào giá trị null xảy ra do một SELECT trong SQL tuyên bố.

Tuy nhiên, bạn có thể sử dụng SET NULL để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null nên được trả lại.

Số lượng đối số không hợp lệ

Đang gọi CHARTOROWID() mà không có bất kỳ đối số nào dẫn đến lỗi:

SELECT CHARTOROWID()
FROM DUAL;

Kết quả:

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

Và việc chuyển quá nhiều đối số cũng dẫn đến lỗi:

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

Kết quả:

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. Cách gói cx_oracle với Pyinstaller

  2. Tổng hợp kết nối ODP.NET:Cách biết kết nối đã được sử dụng hay chưa

  3. Oracle có khôi phục giao dịch do lỗi không?

  4. Làm cách nào để cài đặt Oracle Instant Client trên máy Mac?

  5. Oracle Concurrent Manager - Trình phân tích CP cho E-Business Suite