Sự khác biệt chính là VARCHAR2
là một kiểu dữ liệu nội bộ và VARCHAR
là một kiểu dữ liệu bên ngoài. Vì vậy, chúng ta cần hiểu sự khác biệt giữa kiểu dữ liệu bên trong và bên ngoài …
Bên trong cơ sở tài liệu, những giá trị được tàng trữ trong những cột trong bảng. Về nội bộ, Oracle đại diện thay mặt cho tài liệu theo những định dạng đơn cử được gọi là những kiểu tài liệu nội bộ .
Nói chung, các ứng dụng OCI (Giao diện cuộc gọi Oracle) không hoạt động với các biểu diễn kiểu dữ liệu nội bộ của dữ liệu, nhưng với các kiểu dữ liệu ngôn ngữ máy chủ được xác định trước bằng ngôn ngữ mà chúng được viết. Khi dữ liệu được chuyển giữa ứng dụng khách OCI và bảng cơ sở dữ liệu, các thư viện OCI sẽ chuyển đổi dữ liệu giữa các kiểu dữ liệu bên trong và kiểu dữ liệu bên ngoài.
Các kiểu bên ngoài mang lại sự thuận tiện cho lập trình viên bằng cách làm cho nó có thể làm việc với các kiểu ngôn ngữ chủ thay vì các định dạng dữ liệu độc quyền. OCI có thể thực hiện một loạt các chuyển đổi kiểu dữ liệu khi chuyển dữ liệu giữa cơ sở dữ liệu Oracle và ứng dụng OCI. Có nhiều kiểu dữ liệu bên ngoài OCI hơn kiểu dữ liệu bên trong Oracle.
Kiểu VARCHAR2
dữ liệu là một chuỗi ký tự có độ dài thay đổi với độ dài tối đa là 4000 byte. Nếu tham số init.ora max_string_size là mặc định, thì độ dài tối đa của a VARCHAR2
có thể là 4000 byte. Nếu tham số init.ora max_string_size = mở rộng, độ dài tối đa của a VARCHAR2
có thể là 32767 byte
Kiểu VARCHAR
dữ liệu lưu trữ các chuỗi ký tự có độ dài khác nhau. 2 byte đầu tiên chứa độ dài của chuỗi ký tự và các byte còn lại chứa chuỗi ký tự. Độ dài được chỉ định của chuỗi trong liên kết hoặc lệnh gọi xác định phải bao gồm hai byte độ dài, do đó, VARCHAR
chuỗi lớn nhất có thể nhận hoặc gửi dài 65533 byte, không phải 65535.
Một thử nghiệm nhanh trong cơ sở dữ liệu 12.2 cho thấy rằng với tư cách là một kiểu dữ liệu nội bộ, Oracle vẫn coi a VARCHAR
là một kiểu giả cho VARCHAR2
. Nó KHÔNG PHẢI SYNONYM
là một kiểu đối tượng thực tế trong Oracle.
SQL> select substr(banner,1,80) from v$version where rownum=1;
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> create table test (my_char varchar(20));
Table created.
SQL> desc test
Name Null? Type
MY_CHAR VARCHAR2(20)
Ngoài ra còn có một số hàm ý VARCHAR
đối với các tùy chọn Trình biên dịch trước ProC / C ++. Đối với các lập trình viên quan tâm, liên kết có tại: Hướng dẫn lập trình viên Pro * C / C ++
Source: https://swing.com.vn
Category: Wiki