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

Cách tạo VARRAY làm đối tượng cơ sở dữ liệu trong cơ sở dữ liệu Oracle

Phạm vi của VARRAY được tạo dưới dạng thành viên khối PL / SQL bị giới hạn trong khối mà nó được tạo, điều đó có nghĩa là chúng ta không thể sử dụng VARRAY này bên ngoài khối của nó hoặc thậm chí sử dụng lại nó và đó là nhược điểm lớn nhất của nó. Vì vậy, hãy tiếp tục và đọc để tìm hiểu cách chúng tôi có thể khắc phục nhược điểm này của VARRAY.

Hạn chế này có thể dễ dàng được khắc phục nếu chúng ta có thể tìm ra cách tạo VARRAY bên ngoài khối PL / SQL và lưu trữ nó vĩnh viễn vào lược đồ. May mắn thay, chúng ta có thể đạt được cả hai mục tiêu bằng cách tạo VARRAY làm đối tượng cơ sở dữ liệu. Đó chính xác là những gì chúng ta sẽ tìm hiểu trong hướng dẫn này.

Trong hướng dẫn này, chúng ta sẽ học -

  • Cách tạo VARRAY làm đối tượng cơ sở dữ liệu.
  • Cách sử dụng varray đó.
  • Cách chèn dữ liệu vào VARRAY.
  • Cách truy xuất dữ liệu vào (từ) VARRAY
  • Cách cập nhật dữ liệu của VARRAY.

Hãy bắt đầu với bước đầu tiên.

Cách tạo VARRAY làm Đối tượng cơ sở dữ liệu?

	SET SERVEROUTPUT ON;
	CREATE OR REPLACE TYPE dbObj_vry IS VARRAY (5) OF NUMBER;
	/

Đoạn mã trên khi thực thi thành công sẽ tạo một VARRAY với tên dbObj_vry sẽ có giới hạn kích thước là 5 phần tử và kiểu dữ liệu của chúng sẽ là NUMBER. VARRAY này có phạm vi rộng hơn và có thể được sử dụng không chỉ bên trong khối PL / SQL mà còn với các đối tượng lược đồ khác.

Cách sử dụng VARRAY được tạo làm đối tượng cơ sở dữ liệu?

Lợi ích của việc xác định VARRAY làm đối tượng cơ sở dữ liệu là nó có thể được tham chiếu từ bất kỳ chương trình nào có quyền sử dụng nó. Bạn có thể sử dụng VARRAY với các bảng, bản ghi hoặc thậm chí với các khối PL / SQL.

Hãy làm ví dụ:

Ví dụ 1. Cách xác định một cột của bảng bằng cách sử dụng VARRAY?

CREATE TABLE calendar(
    day_name        VARCHAR2(25),
    day_date        dbObj_vry
);
/

Trong đoạn mã trên, chúng tôi đã tạo một bảng với tên Lịch có hai cột ngày_một và ngày_dày. Cột đầu tiên có thể chứa dữ liệu của kiểu dữ liệu VARCHAR2 trong khi cột thứ hai có thể chứa dữ liệu của loại dbObj_vry là VARRAY.

Thông tin:Việc xác định một cột của bảng là loại VARRAY có nghĩa là gì?
Việc xác định một cột của bảng là kiểu VARRAY có nghĩa là cột có thể chứa ‘n’ số giá trị trong đó. Trong đó ‘n’ bằng giới hạn kích thước của varray đó. Trong trường hợp của chúng tôi, giới hạn kích thước của VARRAY là 5, có nghĩa là cột 'Ngày tháng' của Lịch bảng có thể chứa 5 giá trị.

Làm cách nào để chèn dữ liệu vào VARRAY?

INSERT INTO calendar ( day_name, day_date ) 
VALUES ( 'Sunday', dbObj_vry (7, 14, 21, 28) );    

Câu lệnh chèn DML này sẽ chèn một hàng vào bảng Lịch. Chèn dữ liệu vào cột đầu tiên 'Tên ngày' thuộc loại dữ liệu varchar2 rất dễ dàng. Bạn chỉ cần viết dữ liệu mong muốn và đặt nó thành các dấu ngoặc kép. Nhưng điều này không đúng với cột thứ hai 'Ngày tháng' thuộc loại VARRAY. Để chèn dữ liệu vào cột có kiểu VARRAY, trước tiên bạn phải viết tên của varray và cung cấp dữ liệu.

Ngoài ra, bạn phải đảm bảo bốn điều

  1. Dữ liệu bạn đang cung cấp phải được đặt bên trong dấu ngoặc đơn.
  2. Kiểu dữ liệu của dữ liệu phải khớp với kiểu dữ liệu của các phần tử trong VARRAY của bạn, trong trường hợp của chúng tôi là NUMBER.
  3. Số phần tử bạn đang chèn vào cột phải nhỏ hơn hoặc bằng giới hạn kích thước của VARRAY. Trong trường hợp của chúng tôi, nó là 5 và chúng tôi đang chèn 4 phần tử vào cột là hoàn toàn ổn. Nhưng nếu giả sử tôi chèn 6 phần tử vào cột thì sẽ xảy ra lỗi.
  4. Nếu chèn nhiều dữ liệu vào cột VARRAY, hãy đảm bảo tách các phần tử khỏi nhau bằng dấu chấm phẩy.

Làm cách nào để truy xuất dữ liệu từ VARRAY?

Dữ liệu có thể được truy xuất bằng cách sử dụng câu lệnh SELECT. Bất kỳ câu lệnh SELECT nào được viết đúng sẽ thực hiện được công việc. Ví dụ

SELECT * FROM calendar;

Thao tác này sẽ truy xuất tất cả dữ liệu từ lịch bảng.

Trong trường hợp bạn muốn hiển thị dữ liệu được lưu trữ trong cột, đang chứa dữ liệu kiểu VARRAY, ở định dạng quan hệ thì bạn có thể nhờ đến sự trợ giúp của biểu thức TABLE. Ví dụ

SELECT 
    tab1.day_name, 
    vry.column_value AS "Date"
FROM calendar tab1, TABLE (tab1.day_date) vry;

Câu lệnh SELECT này sẽ hiển thị cho bạn dữ liệu từ cả hai cột ở định dạng quan hệ. Biểu thức TABLE có thể mở thể hiện tập hợp và biểu diễn các hàng đối tượng ở định dạng quan hệ.

Cách cập nhật dữ liệu của cột loại VARRAY?

Việc cập nhật các giá trị của cột kiểu VARRAY khá đơn giản. Ví dụ dưới đây sẽ chỉ cho bạn cách cập nhật giá trị của cột ngày_dày.

UPDATE calendar 
SET day_date = dbObj_vry(10,14,21,28) 
WHERE day_name = 'Sunday';

Ví dụ 2. Cách sử dụng VARRAY với khối PL / SQL?

Trong ví dụ trên, chúng ta đã học cách sử dụng VARRAY được tạo dưới dạng đối tượng Cơ sở dữ liệu để xác định cột của bảng. Bây giờ chúng ta sẽ xem cách sử dụng cùng một varray bên trong một khối PL / SQL.

DECLARE
    vry_obj dbObj_vry    := dbObj_vry();
BEGIN
    FOR i IN 1..vry_obj.LIMIT
    LOOP
        vry_obj.EXTEND; 
        vry_obj(i):= 10*i;
        DBMS_OUTPUT.PUT_LINE(vry_obj(i));    
    END LOOP;
END;
/

Bạn đã thấy ví dụ này trong hướng dẫn trước. Không có thay đổi lớn nào ở đây ngoại trừ việc lần này thay vì xác định VARRAY bên trong khối, chúng tôi đã tạo nó như một đối tượng cơ sở dữ liệu độc lập. Tôi khuyên bạn nên xem hướng dẫn cuối cùng, nơi tôi đã giải thích chi tiết về đoạn mã trên.

Đó là hướng dẫn PL / SQL về cách tạo VARRAY làm đối tượng Cơ sở dữ liệu trong Oracle. Hy vọng bạn thích đọc, nếu vậy hãy nhớ chia sẻ blog này trên mạng xã hội của bạn với bạn bè của bạn. Cảm ơn và chúc một ngày tốt lành!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ký tự thoát SQL trong Oracle (cho một '&')

  2. Oracle SQL GROUP BY không phải là GROUP BY biểu thức Trợ giúp

  3. Cách tạo một thủ tục bên trong một gói trong Oracle

  4. Dữ liệu truy vấn từ XML

  5. Cách trích xuất số tuần trong sql