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

Kiểu dữ liệu PL/SQL là gì?

Loại dữ liệu trong PL/SQL được sử dụng để xác định cách dữ liệu sẽ được lưu trữ, xử lý và xử lý bởi Oracle trong quá trình lưu trữ và xử lý dữ liệu. Các kiểu dữ liệu được liên kết với các ràng buộc phạm vi và định dạng lưu trữ cụ thể. TRONG Oracle, mỗ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 kiểu dữ liệu là, kiểu dữ liệu SQL được giới hạn trong cột bảng trong khi kiểu dữ liệu PL/SQL được sử dụng trong 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.

Sau đây là sơ đồ của các loại khác nhau Oracle Các kiểu dữ liệu PL/SQL:

Kiểu dữ liệu 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 về cơ bản lưu trữ các ký tự chữ và số ở định dạng chuỗi.

Các giá trị bằng chữ 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ả cú pháp
XE TĂNG Kiểu dữ liệu này lưu trữ 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 biến sẽ được đệm trống nếu biến không chiếm toàn bộ kích thước đã được khai báo cho nó, do đó Oracle sẽ phân bổ bộ nhớ cho kích thước đã khai báo ngay cả khi biến không chiếm hết bộ nhớ.
  • Giới hạn kích thước cho loại dữ liệu này là 1-2000 byte.
  • Kiểu dữ liệu CHAR phù hợp hơn để sử dụng khi xử lý kích thước dữ liệu cố định.
grade CHAR;
manager CHAR (10):= 'guru99';

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

  • Câu lệnh khai báo đầu tiên khai báo biến “grade” của 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 khai báo thứ hai khai báo biến 'manager' kiểu dữ liệu CHAR với kích thước tối đa là 10 và được gán giá trị 'guru99' là 6 byte. Oracle sẽ phân bổ bộ nhớ 10 byte thay vì 6 byte trong trường hợp này.
VARCHAR2 Kiểu dữ liệu này lưu trữ chuỗi nhưng độ dài của chuỗi không cố định.

  • Giới hạn kích thước cho loại dữ liệu này là 1-4000 byte cho kích thước cột trong bảng và 1-32767 byte cho các biến.
  • Kích thước được xác định cho mỗi biến tại thời điểm khai báo biến.
  • Nhưng Oracle sẽ chỉ cấp phát bộ nhớ sau khi biến được xác định, tức là Oracle sẽ chỉ xem xét độ dài thực tế của chuỗi được lưu trữ trong một biến để cấp phát bộ nhớ thay vì kích thước đã được đưa ra cho một biến trong phần khai báo.
  • Việc sử dụng VARCHAR2 thay vì kiểu dữ liệu CHAR luôn là điều 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 trên đã khai báo biến 'manager' của kiểu dữ liệu VARCHAR2 với kích thước tối đa là 10 và được gán giá trị 'guru99' là 6 byte. Oracle sẽ phân bổ bộ nhớ chỉ 6 byte trong trường hợp này.
VARCHAR Điều này đồng nghĩa với kiểu dữ liệu VARCHAR2.

  • Bạn 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 khai báo trên đã khai báo biến 'manager' của kiểu dữ liệu VARCHAR với kích thước tối đa là 10 và được gán giá trị 'guru99' là 6 byte. Oracle sẽ phân bổ bộ nhớ chỉ 6 byte trong trường hợp này. (Tương tự như VARCHAR2)
NCHAR Kiểu dữ liệu này giống với kiểu dữ liệu CHAR nhưng bộ ký tự sẽ thuộc bộ 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 khai báo ở trên khai báo biến 'native' có kiểu dữ liệu NCHAR với kích thước tối đa là 10.
  • Độ dài của biến này phụ thuộc vào (số độ dài) trên mỗi byte như được xác định trong bộ ký tự.
NVARCHAR2 Kiểu dữ liệu này giống với kiểu dữ liệu VARCHAR2, nhưng bộ ký tự sẽ thuộc bộ 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 khai báo ở trên khai báo biến 'Native_var' có kiểu dữ liệu NVARCHAR2 với kích thước tối đa là 10.
DÀI và DÀI Loại dữ liệu này được sử dụng để lưu trữ văn bản lớn hoặc dữ liệu thô có kích thước tối đa là 2GB.

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

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

  • Câu lệnh khai báo ở trên khai báo biến '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 Oracle. Thay vào đó, kiểu dữ liệu LOB nên được ưu tiên.

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

Kiểu dữ liệu này lưu trữ các số dấu phẩy động hoặc cố định có độ chính xác lên đến 38 chữ số. Kiểu dữ liệu này đượ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 với độ chính xác và chi tiết chữ số thập phân hoặc không có thông tin này. Các giá trị không cần phải được đặt trong dấu ngoặc kép khi gán cho kiểu dữ liệu này.

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

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

  • Trong phần trên, khai báo đầu tiên khai báo biến 'A' là kiểu dữ liệu số với tổng độ chính xác là 8 và chữ số thập phân là 2.
  • Câu khai báo thứ hai khai báo biến 'B' là kiểu dữ liệu số có độ chính xác tổng cộng là 8 và không có chữ số thập phân.
  • Khai báo thứ ba là khai báo chung nhất, khai báo biến 'C' là kiểu dữ liệu số không có giới hạn về độ chính xác hoặc số thập phâ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 đại diện TRUE hoặc FALSE và chủ yếu được sử dụng trong các câu lệnh điều kiện. Các giá trị không cần đặt trong dấu ngoặc kép khi gán cho loại dữ liệu này.

Var1 BOOLEAN;

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

  • Ở trên, biến 'Var1' được khai báo là kiểu dữ liệu BOOLEAN. Đầu ra của mã sẽ là đúng hoặc sai dựa trên bộ điều kiện.

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, dưới dạng ngày, tháng và năm. Bất cứ khi nào một biến được xác định bằng kiểu dữ liệu DATE cùng với ngày, nó có thể chứa thông tin thời gian và theo mặc định, thông tin thời gian được đặt thành 12:00:00 nếu không được chỉ định. Các giá trị cần phải đặt trong dấu ngoặc kép khi gán cho loại dữ liệu này.

Tiêu chuẩn này Oracle định dạng thời gian cho đầu vào và đầu ra là 'DD-MON-YY' và nó lại được đặt ở 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:

  • Ở trên, 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 XNUMXst, ngày 2015
  • Câu khai báo thứ hai khai báo biến current_date là kiểu dữ liệu DATE và gán giá trị bằng ngày hiện tại của hệ thống.
  • Cả hai biến này đều chứa thông tin 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à thao tác các khối lớn dữ liệu phi cấu trúc như hình ảnh, tệp đa phương tiện, v.v. Oracle thích LOB thay vì kiểu dữ liệu LONG vì nó linh hoạt hơn kiểu dữ liệu LONG. Dưới đây là một số ưu điểm chính của LOB so với kiểu dữ liệu LONG.

  • Số lượng cột trong bảng có kiểu dữ liệu LONG được giới hạn ở 1, trong khi đó một bảng không có hạn chế về số lượng cột có kiểu dữ liệu LOB.
  • Công cụ giao diện dữ liệu chấp nhận kiểu dữ liệu LOB của bảng trong quá trình sao chép dữ liệu, nhưng nó bỏ qua cột LONG của bảng. Các cột DÀI này cần được sao chép thủ công.
  • Kích thước của cột LONG là 2GB, trong khi LOB có thể lưu trữ tới 128 TB.
  • Oracle đang không ngừng cải tiến kiểu dữ liệu LOB trong mỗi bản phát hành của mình theo yêu cầu hiện đại, trong khi kiểu dữ liệu LONG không đổi và không nhận được nhiều cập nhật.

Vì vậy, luôn tốt khi sử dụng kiểu dữ liệu LOB thay vì kiểu dữ liệu LONG. Sau đây là các kiểu dữ liệu LOB khác nhau. Chúng có thể lưu trữ tới 128 terabyte.

  1. BÃI
  2. CLOB và NCLOB
  3. BFILE
Loại dữ liệu Mô 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 có kích thước tối đa là 128 TB. Kiểu dữ liệu này 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ư đối tượng đa phương tiện, hình ảnh, v.v.
Binary_data BLOB;

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

  • Ở trên, biến 'Binary_data' được khai báo là BLOB.
CLOB và NCLOB Kiểu dữ liệu CLOB lưu trữ dữ liệu LOB vào bộ ký tự, trong khi NCLOB lưu trữ dữ liệu trong bộ ký tự gốc. Vì các loại dữ liệu này sử dụng bộ lưu trữ 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, hình ảnh, v.v. mà không thể đưa vào chuỗi ký tự. Kích thước tối đa của các loại dữ liệu này là 128 TB.
Charac_data CLOB;

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

  • Ở trên, biến 'Charac_data' được khai báo là kiểu dữ liệu CLOB.
BFILE
  • BFILE là các kiểu dữ liệu lưu trữ dữ liệu định dạng nhị phân phi 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 BFILE dành cho hệ điều hành giới hạn và chúng là các tệp chỉ đọc và không thể sửa đổi.

Tổng kết

Chúng tôi đã đề cập đến các loại dữ liệu đơn giản khác nhau có sẵn trong PL / SQL cùng với cú pháp của chúng. Chúng ta sẽ tìm hiểu về các kiểu dữ liệu phức tạp trong các chủ đề tiếp theo.