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

Mục lục:

Anonim

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

Một kiểu dữ liệu được liên kết với định dạng lưu trữ cụ thể và các ràng buộc về phạm vi. Trong Oracle, mỗi giá trị hoặc hằng số được gán với một kiểu dữ liệu.

Về cơ bản, nó xác định cách dữ liệu đượ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.

Sự khác biệt chính giữa kiểu dữ liệu PL / SQL và SQL 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 các khối PL / SQL. Tìm hiểu thêm về điều này sau trong hướng dẫn.

Sau đây là sơ đồ các kiểu dữ liệu khác nhau trong PL / SQL

Trong hướng dẫn này, bạn sẽ học-

  • Loại dữ liệu CHARACTER
  • NUMBER Loại dữ liệu
  • Loại dữ liệu BOOLEAN
  • Loại dữ liệu DATE
  • Loại dữ liệu LOB

Loại dữ liệu 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ị chữ phải luôn được đặt trong dấu ngoặc kép trong 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:

  • CHAR Kiểu dữ liệu (kích thước chuỗi cố định)
  • VARCHAR2 Kiểu dữ liệu (kích thước chuỗi thay đổi)
  • VARCHAR Kiểu dữ liệu
  • NCHAR (kích thước chuỗi cố định gốc)
  • NVARCHAR2 (kích thước chuỗi biến tự nhiên)
  • NGUYÊN LIỆU DÀI và DÀI
Loại dữ liệu Sự miêu tả Cú pháp
CHAR 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 sẽ để trống biến nếu biến không chiếm toàn bộ kích thước đã được khai báo cho nó, Do đó Oracle sẽ cấp phát bộ nhớ cho kích thước đã khai báo ngay cả khi biến không chiếm hết kích thước.
  • Giới hạn kích thước cho kiểu dữ liệu này là 1-2000 byte.
  • Kiểu dữ liệu CHAR thích hợp hơn để sử dụng ở những nơi đã từng cố định kích thước dữ liệu sẽ được xử lý.
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 'lớp' 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' của kiểu dữ liệu CHAR với kích thước tối đa là 10 và gán giá trị 'guru99' là 6 byte. Oracle sẽ cấp phát 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 kiểu dữ liệu này là 1-4000 byte cho kích thước cột 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ớ chứ không phải là kích thước đã được cấp cho một biến trong phần khai báo.
  • Sử dụng VARCHAR2 thay vì kiểu dữ liệu CHAR luô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 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à gán giá trị 'guru99' là 6 byte. Oracle sẽ cấp phát 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 thay đổi 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à gán giá trị 'guru99' là 6 byte. Oracle sẽ cấp phát bộ nhớ chỉ 6 byte trong trường hợp này. (Tương tự với VARCHAR2)
NCHAR Kiểu dữ liệu này giống 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 bằ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 'gốc' của 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 bằ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ủa 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 tập 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 cách sử dụ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ủa kiểu dữ liệu LONG và 'Large_raw' của kiểu dữ liệu LONG RAW.
Lưu ý: Oracle không khuyến khích sử dụng kiểu dữ liệu LONG. Thay vào đó, kiểu dữ liệu LOB nên được ưu tiên.

NUMBER Loại dữ liệu:

Kiểu dữ liệu này lưu trữ các số cố định hoặc dấu phẩy động 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 sẽ 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. Giá trị không cần đặ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' thuộc kiểu dữ liệu số với tổng độ chính xác 8 và các chữ số thập phân 2.
  • Khai báo thứ hai khai báo biến 'B' là kiểu dữ liệu số với tổng độ chính xác 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' thuộc kiểu dữ liệu số không bị hạn chế về độ chính xác hoặc vị trí thập phân. Nó có thể chứa tối đa 38 chữ số.

Loại dữ liệu BOOLEAN:

Kiểu dữ liệu này lưu trữ các giá trị logic. Nó đại diện cho 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 đặt trong dấu ngoặc kép khi gán cho kiểu 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 điều kiện đã đặt.

DATE Loại dữ liệu:

Kiểu dữ liệu này lưu trữ các giá trị ở định dạng ngày, như ngày, tháng và năm. Bất cứ khi nào một biến được xác định với 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. Giá trị cần đặt trong dấu ngoặc kép khi gán cho kiểu dữ liệu này.

Định dạng thời gian tiêu chuẩn của Oracle 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:

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

Loại dữ liệu 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 dữ liệu phi cấu trúc lớn 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 vài ưu điểm chính của kiểu dữ liệu LOB so với DÀI.

  • Số cột trong bảng có kiểu dữ liệu LONG được giới hạn ở 1, trong khi bảng không giới hạn số 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 DÀI của bảng. Các cột DÀI này cần được sao chép theo cách thủ công.
  • Kích thước của cột DÀI là 2GB, trong khi LOB có thể lưu trữ lên đến 128 TB.
  • Oracle 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 họ theo yêu cầu hiện đại, trong khi kiểu dữ liệu LONG là không đổi và không nhận được nhiều bản cập nhật.

Vì vậy, luôn tốt nếu 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ữ lên đến kích thước 128 terabyte.

  1. BÃI
  2. CLOB và NCLOB
  3. NỀN
Loại dữ liệu Sự miêu 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. Điều này không lưu trữ dữ liệu dựa trên chi tiết bộ ký tự, vì vậy nó có thể lưu trữ dữ liệu phi cấu trúc như các đố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 dữ liệu LOB vào tập ký tự, trong khi NCLOB lưu dữ liệu trong tập ký tự gốc. Vì các kiểu dữ liệu này sử dụng bộ lưu trữ dựa trên bộ ký tự, chúng không thể lưu trữ các dữ liệu như đa phương tiện, hình ảnh, v.v. không thể được đưa vào một 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.
NỀN
  • BFILE là các kiểu dữ liệu lưu trữ dữ liệu định dạng nhị phân không có 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 một hệ điều hành hạn chế và chúng là các tệp chỉ đọc và không thể sửa đổi.

Tóm lược

Chúng tôi đã đề cập đến các kiểu 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.