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

Tại sao Oracle varchar2 có kích thước bắt buộc làm tham số định nghĩa?

Không, nó hoàn toàn không giống nhau.

  1. Độ dài của cột là siêu dữ liệu hữu ích cho các nhà phát triển xây dựng màn hình.
  2. Tương tự, các công cụ truy vấn tự động như TOAD và SQL Developer sử dụng độ dài của cột khi chúng hiển thị kết quả.
  3. Cơ sở dữ liệu sử dụng độ dài của một biến khi cấp phát bộ nhớ cho các tập hợp PL / SQL. Khi bộ nhớ đó ra khỏi PGA thay thế khai báo biến có thể dẫn đến các chương trình bị lỗi vì máy chủ đã hết bộ nhớ.
  4. Có những vấn đề tương tự với việc khai báo các biến đơn trong chương trình PL / SQL, chỉ là các tập hợp có xu hướng nhân lên vấn đề.
  5. Các cột quá khổ tạo ra các vấn đề cho các chỉ mục ghép. Sau đây là trên cơ sở dữ liệu với 8K khối

....

SQL> create table t23 (col1 varchar2(4000), col2 varchar2(4000))
  2  /

Table created.

SQL> create index t23_i on t23(col1,col2)
  2  /
create index t23_i on t23(col1,col2)
                      *
ERROR at line 1:
ORA-01450: maximum key length (6398) exceeded


SQL>

Nhưng trên hết, kích thước cột là một hình thức kiểm tra lỗi. Nếu cột được cho là dài mười ký tự và một số quy trình tự trị đang cố tải một nghìn ký tự thì đã xảy ra lỗi. Quá trình này sẽ không thành công, vì vậy chúng tôi có thể điều tra lý do tại sao chúng tôi tải dữ liệu thô. Giải pháp thay thế là một cơ sở dữ liệu đầy rác, và nếu đó là điều mong muốn, chúng ta nên cung cấp cho mọi người Excel và thực hiện với nó.

Đúng là thay đổi kích thước cột khi chúng ta đã đánh giá thấp có thể gây mệt mỏi. Nhưng nó không thường xuyên xảy ra và chúng ta có thể giảm thiểu rất nhiều sự cố bằng cách sử dụng khai báo% TYPE và SUBTYPE trong PL / SQL của chúng ta thay vì độ dài biến mã hóa cứng.

Các con số khác nhau. Để bắt đầu, kích thước tối đa của một số nhỏ hơn nhiều so với kích thước tương đương của văn bản (38 chữ số của độ chính xác được đảm bảo).

Nhưng sự khác biệt chính là Oracle lưu trữ các giá trị số trong ký hiệu khoa học vì vậy không có mối quan hệ đơn giản giữa kích thước số học của số và không gian lưu trữ mà nó sử dụng.

SQL> select vsize(123456789012345678901) n1
  2         , vsize(999999999999999999999999999999) n2
  3         , vsize(0.000000000000000000001) n3
  4         , vsize(1000000000000000000000000) n4
  5  from dual
  6  /

        N1         N2         N3         N4
---------- ---------- ---------- ----------
        12         16          2          2

SQL> 

Tuy nhiên, bạn vẫn nên chỉ định tỷ lệ và độ chính xác khi có thể, đặc biệt là khi chúng ta xử lý số nguyên, chẳng hạn như hoặc tiền.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi Oracle ORA-06512

  2. Tại sao truy vấn Oracle 12c yêu cầu dấu ngoặc kép xung quanh bảng

  3. Giới thiệu về tập hợp PL / SQL trong cơ sở dữ liệu Oracle

  4. Trong PL / SQL, làm thế nào để bạn cập nhật một hàng dựa trên hàng tiếp theo?

  5. Thuật toán được sử dụng bởi hàm ORA_HASH là gì?