Oracle Các kiểu dữ liệu PL/SQL: Boolean, Number, Date [Ví dụ]

⚡ Tóm tắt thông minh

Các kiểu dữ liệu PL/SQL xác định cách thức... Oracle Nó lưu trữ, xử lý và ràng buộc từng giá trị trong một khối. Chúng được nhóm thành các loại ký tự, số, Boolean, ngày tháng và đối tượng lớn (LOB), mỗi loại có định dạng lưu trữ, giới hạn kích thước và quy tắc gán riêng.

  • 🔤 Đặc tính: CHAR có độ dài cố định, VARCHAR2 có độ dài thay đổi, còn NCHAR và NVARCHAR2 sử dụng bộ ký tự quốc gia.
  • 🔢 Số: Kiểu dữ liệu NUMBER lưu trữ các giá trị số thực hoặc số thập phân với độ chính xác lên đến 38 chữ số.
  • Boolean: Biến này có giá trị TRUE hoặc FALSE và chủ yếu được sử dụng trong logic điều kiện.
  • 📅 Ngày: Lưu trữ ngày và giờ, mặc định là nửa đêm nếu không có giờ nào được cung cấp.
  • 🗂️ LOB: Các kiểu dữ liệu BLOB, CLOB, NCLOB và BFILE lưu trữ dữ liệu phi cấu trúc dung lượng lớn lên đến 128 TB.
  • 💡 Thực hành tốt nhất: Nên ưu tiên VARCHAR2 hơn CHAR và LOB hơn LONG để tiết kiệm bộ nhớ và đảm bảo khả năng tương thích trong tương lai.
  • 🔗 Phạm vi: Các kiểu dữ liệu SQL áp dụng cho các cột trong bảng; các kiểu dữ liệu PL/SQL được sử dụng bên trong các khối PL/SQL.

Oracle Các kiểu dữ liệu PL/SQL

Các kiểu dữ liệu trong PL/SQL là gì?

Loại dữ liệu Trong PL/SQL, các tham số này định nghĩa cách dữ liệu sẽ được lưu trữ, xử lý và sử dụng. Oracle Trong quá trình lưu trữ và xử lý, các kiểu dữ liệu được liên kết với một định dạng lưu trữ cụ thể và các ràng buộc về phạm vi. OracleMỗi giá trị hoặc hằng số được gán một kiểu dữ liệu.

Sự khác biệt chính giữa PL/SQL và SQL Điểm khác biệt giữa các kiểu dữ liệu là kiểu dữ liệu SQL chỉ giới hạn ở các cột trong bảng, trong khi kiểu dữ liệu PL/SQL được sử dụng rộng rãi hơn. Khối PL/SQL. Chúng ta sẽ tìm hiểu thêm về điều này ở phần sau của hướng dẫn.

Dưới đây là sơ đồ minh họa các loại khác nhau. Oracle Các kiểu dữ liệu PL/SQL:

Các kiểu dữ liệu khác nhau trong PL/SQL
Các kiểu dữ liệu khác nhau trong PL/SQL

Kiểu dữ liệu PL/SQL CHARACTER

Kiểu dữ liệu này lưu trữ các ký tự chữ và số ở định dạng chuỗi. Các giá trị cố định phải luôn được đặt trong dấu ngoặc đơn khi gán chúng cho kiểu dữ liệu CHARACTER.

Kiểu dữ liệu ký tự này được phân loại thêm như sau:

  • Kiểu dữ liệu CHAR (kích thước chuỗi cố định)
  • Kiểu dữ liệu VARCHAR2 (kích thước chuỗi thay đổi)
  • kiểu dữ liệu VARCHAR
  • NCHAR (kích thước chuỗi cố định gốc)
  • NVARCHAR2 (kích thước chuỗi biến gốc)
  • DÀI và DÀI NGUYÊN
Loại dữ liệu Mô tả Chi tiết cú pháp
XE TĂNG Kiểu dữ liệu này lưu trữ một giá trị chuỗi, và kích thước của chuỗi được cố định tại thời điểm khai báo. biến.

  • Oracle Nó sẽ thêm các khoảng trắng vào biến nếu biến đó không chiếm hết kích thước đã khai báo, vì vậy Oracle Cấp phát bộ nhớ với kích thước đã khai báo ngay cả khi biến đó không sử dụng hết dung lượng bộ nhớ.
  • Giới hạn kích thước là 1-2000 byte.
  • Kiểu dữ liệu CHAR phù hợp hơn trong trường hợp xử lý dữ liệu có kích thước cố định.
grade CHAR;
manager CHAR (10):= 'guru99';

Giải thích cú pháp:

  • Câu lệnh đầu tiên khai báo biến 'grade' thuộc kiểu dữ liệu CHAR với kích thước tối đa là 1 byte (giá trị mặc định).
  • Câu lệnh thứ hai khai báo biến 'manager' thuộc kiểu dữ liệu CHAR với kích thước tối đa là 10 và gán giá trị 'guru99', có kích thước là 6 byte. Oracle Trong trường hợp này, nó phân bổ 10 byte thay vì 6 byte.
VARCHAR2 Kiểu dữ liệu này lưu trữ một chuỗi ký tự, nhưng độ dài không cố định.

  • Giới hạn kích thước là 1-4000 byte cho cột bảng và 1-32767 byte cho biến.
  • Kích thước được xác định cho mỗi biến khi khai báo.
  • Oracle Nó chỉ cấp phát bộ nhớ sau khi biến được định nghĩa, vì vậy nó sử dụng độ dài thực tế của chuỗi được lưu trữ chứ không phải kích thước đã khai báo.
  • Việc sử dụng VARCHAR2 thay vì CHAR luôn là một lựa chọn tốt để tối ưu hóa việc sử dụng bộ nhớ.
manager VARCHAR2(10) := 'guru99';

Giải thích cú pháp:

  • Câu lệnh khai báo biến 'manager' thuộc kiểu dữ liệu VARCHAR2 với kích thước tối đa là 10 và gán giá trị 'guru99', có kích thước là 6 byte. Oracle Chỉ cấp phát 6 byte bộ nhớ ở đây.
VARCHAR Điều này đồng nghĩa với kiểu dữ liệu VARCHAR2.

  • Nên sử dụng VARCHAR2 thay vì VARCHAR để tránh những thay đổi về hành vi.
manager VARCHAR(10) := 'guru99';

Giải thích cú pháp:

  • Câu lệnh này khai báo biến 'manager' thuộc kiểu dữ liệu VARCHAR với kích thước tối đa là 10 và gán giá trị 'guru99', 6 byte. Oracle Chỉ cấp phát 6 byte, tương tự như VARCHAR2.
NCHAR Kiểu dữ liệu này giống với kiểu CHAR, nhưng bảng ký tự là bảng ký tự quốc gia.

  • Bộ ký tự này có thể được xác định cho phiên sử dụng NLS_PARAMETERS.
  • Bộ ký tự có thể là UTF16 hoặc UTF8.
  • Giới hạn kích thước là 1-2000 byte.
native NCHAR(10);

Giải thích cú pháp:

  • Câu lệnh này khai báo biến 'native' thuộc kiểu dữ liệu NCHAR với kích thước tối đa là 10.
  • Độ dài phụ thuộc vào số byte trên mỗi ký tự được định nghĩa trong bảng ký tự.
NVARCHAR2 Kiểu dữ liệu này giống với VARCHAR2, nhưng bảng ký tự là bảng ký tự quốc gia.

  • Bộ ký tự này có thể được xác định cho phiên sử dụng NLS_PARAMETERS.
  • Bộ ký tự có thể là UTF16 hoặc UTF8.
  • Giới hạn kích thước là 1-4000 byte.
Native_var NVARCHAR2(10):= 'guru99';

Giải thích cú pháp:

  • Câu lệnh này khai báo biến 'Native_var' thuộc kiểu dữ liệu NVARCHAR2 với kích thước tối đa là 10.
DÀI và DÀI NGUYÊN Kiểu dữ liệu này lưu trữ văn bản lớn hoặc dữ liệu thô với dung lượng tối đa là 2 GB.

  • Chúng chủ yếu được sử dụng trong từ điển dữ liệu.
  • LONG lưu trữ dữ liệu theo bộ ký tự, trong khi LONG RAW lưu trữ dữ liệu ở định dạng nhị phân.
  • LONG RAW chấp nhận các đối tượng đa phương tiện và hình ảnh, trong khi LONG chỉ hoạt động trên dữ liệu có thể được lưu trữ bằng một bộ ký tự.
Large_text LONG;
Large_raw LONG RAW;

Giải thích cú pháp:

  • Câu lệnh này khai báo 'Large_text' có kiểu dữ liệu LONG và 'Large_raw' có kiểu dữ liệu LONG RAW.

Lưu ý: Việc sử dụng kiểu dữ liệu LONG không được khuyến khích bởi... OracleNên ưu tiên sử dụng kiểu dữ liệu LOB.

SỐ PL/SQL Kiểu dữ liệu

Kiểu dữ liệu này lưu trữ các số thập phân hoặc số thực với độ chính xác lên đến 38 chữ số. Nó được sử dụng để làm việc với các trường chỉ chứa dữ liệu số. Biến có thể được khai báo kèm theo độ chính xác và thông tin chữ số thập phân hoặc không. Giá trị không cần phải được đặt trong dấu ngoặc kép khi gán.

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Giải thích cú pháp:

  • Khai báo đầu tiên khai báo biến 'A' thuộc kiểu dữ liệu số với độ chính xác 8 và 2 chữ số thập phân.
  • Câu lệnh thứ hai khai báo 'B' thuộc kiểu dữ liệu số với độ chính xác tuyệt đối là 8 và không có chữ số thập phân.
  • Loại thứ ba là loại tổng quát nhất, khai báo 'C' thuộc kiểu dữ liệu số mà không có bất kỳ hạn chế nào về độ chính xác hoặc số thập phân. Nó có thể chứa tối đa 38 chữ số.

Kiểu dữ liệu BOOLEAN PL/SQL

Kiểu dữ liệu này lưu trữ các giá trị logic. Oracle Kiểu dữ liệu Boolean biểu thị giá trị TRUE hoặc FALSE và chủ yếu được sử dụng trong các câu lệnh điều kiện. Giá trị không cần phải được đặt trong dấu ngoặc kép khi gán.

Var1 BOOLEAN;

Giải thích cú pháp:

  • Biến 'Var1' được khai báo với kiểu dữ liệu BOOLEAN. Kết quả trả về sẽ là true hoặc false tùy thuộc vào điều kiện được thiết lập.

PL/SQL DATE Kiểu dữ liệu

Kiểu dữ liệu này lưu trữ các giá trị ở định dạng ngày tháng, bao gồm ngày, tháng và năm. Bất cứ khi nào một biến được định nghĩa với kiểu dữ liệu DATE, nó có thể chứa thông tin thời gian; theo mặc định, thời gian được đặt là 12:00:00 nếu không được chỉ định. Các giá trị cần được đặt trong dấu ngoặc kép khi gán.

Tiêu chuẩn này Oracle Định dạng thời gian cho đầu vào và đầu ra là 'DD-MON-YY', được thiết lập tại NLS_PARAMETERS (NLS_DATE_FORMAT) ở cấp độ phiên.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Giải thích cú pháp:

  • Biến 'newyear' được khai báo là kiểu dữ liệu DATE và được gán giá trị là ngày 1 tháng 1 năm 2015.
  • Khai báo thứ hai cho biết 'current_date' có kiểu dữ liệu DATE và gán ngày tháng hiện tại của hệ thống.
  • Cả hai biến đều chứa thông tin về thời gian.

Kiểu dữ liệu PL/SQL LOB

Kiểu dữ liệu này chủ yếu được sử dụng để lưu trữ và xử lý các khối dữ liệu phi cấu trúc lớn như hình ảnh và các tệp đa phương tiện. Oracle Ưu tiên kiểu dữ liệu LOB hơn kiểu dữ liệu LONG vì nó linh hoạt hơn. Những ưu điểm chính của LOB so với LONG là:

  • Một bảng chỉ được phép có một cột kiểu LONG, trong khi đó không có giới hạn nào về số lượng cột kiểu LOB.
  • Các công cụ giao diện dữ liệu chấp nhận kiểu dữ liệu LOB trong quá trình sao chép nhưng bỏ qua các cột LONG, do đó các cột này phải được sao chép thủ công.
  • Cột LONG có thể lưu trữ tối đa 2 GB, trong khi cột LOB có thể lưu trữ tối đa 128 TB.
  • Oracle Kiểu dữ liệu LOB liên tục được cải tiến qua mỗi bản phát hành, trong khi kiểu dữ liệu LONG hầu như không thay đổi.

Vì vậy, tốt hơn hết là nên sử dụng kiểu dữ liệu LOB thay vì LONG. Các kiểu dữ liệu LOB khác nhau dưới đây có thể lưu trữ đến 128 terabyte:

  1. BÃI
  2. CLOB và NCLOB
  3. BFILE
Loại dữ liệu Mô tả Chi tiết cú pháp
BÃI Kiểu dữ liệu này lưu trữ dữ liệu LOB ở định dạng tệp nhị phân với dung lượng tối đa 128 TB. Nó không lưu trữ dữ liệu dựa trên chi tiết bộ ký tự, do đó có thể lưu trữ dữ liệu phi cấu trúc như các đối tượng đa phương tiện và hình ảnh.
Binary_data BLOB;

Giải thích cú pháp:

  • Biến 'Binary_data' được khai báo là kiểu BLOB.
CLOB và NCLOB CLOB lưu trữ dữ liệu LOB trong bộ ký tự, trong khi NCLOB lưu trữ dữ liệu trong bộ ký tự gốc. Vì chúng sử dụng bộ nhớ dựa trên bộ ký tự, nên chúng không thể lưu trữ dữ liệu như đa phương tiện hoặc hình ảnh. Kích thước tối đa là 128 TB.
Charac_data CLOB;

Giải thích cú pháp:

  • Biến 'Charac_data' được khai báo với kiểu dữ liệu CLOB.
BFILE
  • BFILE lưu trữ dữ liệu nhị phân không cấu trúc bên ngoài cơ sở dữ liệu dưới dạng tệp hệ điều hành.
  • Kích thước của tệp BFILE bị giới hạn bởi hệ điều hành, và các tệp này chỉ có thể đọc và không thể chỉnh sửa.

Câu Hỏi Thường Gặp

Kiểu dữ liệu CHAR có độ dài cố định và tự động thêm khoảng trắng vào cuối cho đến khi đạt kích thước đã khai báo, gây lãng phí không gian cho các giá trị ngắn. Kiểu dữ liệu VARCHAR2 có độ dài thay đổi và chỉ lưu trữ các ký tự thực tế, do đó nó được ưu tiên sử dụng cho hầu hết các cột chuỗi.

LOB cho phép nhiều cột trên mỗi bảng, lưu trữ tối đa 128 TB và liên tục được cải tiến qua mỗi phiên bản. LONG bị giới hạn ở một cột, dung lượng tối đa 2 GB và được giữ lại chủ yếu để đảm bảo khả năng tương thích ngược.

Không có trong các phiên bản cũ hơn. BOOLEAN là kiểu dữ liệu chỉ dành riêng cho PL/SQL, vì vậy các cột trong bảng sử dụng cờ NUMBER hoặc CHAR thay thế. Nó được sử dụng trực tiếp bên trong các khối lệnh để thực hiện logic điều kiện.

Đúng vậy. Bằng cách phân tích các giá trị mẫu về độ dài, phạm vi và định dạng, AI có thể đề xuất VARCHAR2, NUMBER, DATE hoặc LOB, và đánh dấu các cột có kích thước quá lớn. Hãy xác nhận lựa chọn này bằng dữ liệu trong tương lai.

Đúng vậy. Kiểu dữ liệu DATE lưu trữ thế kỷ, năm, tháng, ngày, giờ, phút và giây. Nếu không cung cấp thời gian, nó sẽ mặc định là nửa đêm. Đối với giây thập phân hoặc múi giờ, hãy sử dụng kiểu dữ liệu TIMESTAMP.

Tóm tắt bài viết này với: