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

Phương pháp thu thập:Thủ tục EXTEND trong Cơ sở dữ liệu Oracle

Sau PL / SQL Collection Method DELETE, thủ tục EXTEND trong cơ sở dữ liệu Oracle là thủ tục thứ hai trong danh sách. Chúng tôi đã sử dụng thủ tục này nhiều lần nhưng không bao giờ có cơ hội khám phá nó một cách chi tiết. Vì vậy, tôi đã quyết định dành toàn bộ blog cho phương pháp Bộ sưu tập này. Vì vậy, hãy ngồi lại và tận hưởng blog.

Nếu bạn chưa quen với PL / SQL và không biết Thủ tục là gì thì chúng tôi có một hướng dẫn cho bạn. Nhấp vào đây và tìm hiểu tất cả về các thủ tục PL / SQL trong Cơ sở dữ liệu Oracle.

Phương pháp thu thập PL / SQL EXTEND là gì?

Tương tự như DELETE, phương thức Collection EXTEND là một thủ tục PL / SQL được nạp chồng được sử dụng để thêm các phần tử vào tập hợp.

Chúng ta có thể gọi thủ tục EXTEND trong Cơ sở dữ liệu Oracle bằng bao nhiêu cách?

Thủ tục thu thập PL / SQL là một thủ tục được nạp chồng. Vì vậy, nó có nghĩa là chúng ta gọi cùng một thủ tục theo những cách khác nhau. Các cách khác nhau này để gọi Thủ tục thu thập EXTEND là -

  1. Mở rộng:Mở rộng lệnh gọi thủ tục mà không có bất kỳ đối số nào.

Gọi thủ tục Thu thập PL / SQL Mở rộng mà không có bất kỳ đối số nào sẽ nối thêm một phần tử NULL duy nhất vào bộ sưu tập.

  1. Extend (n):Mở rộng lệnh gọi thủ tục với một đối số.

Thủ tục thu thập Mở rộng bằng một đối số sẽ thêm số phần tử NULL mà bạn đã đề cập làm đối số của thủ tục . Tuy nhiên, hãy nhớ rằng đối số phải là giá trị Số nguyên hợp lệ.

  1. Extend (n, v):Mở rộng lệnh gọi thủ tục với hai đối số.

Trong trường hợp này, đối số đầu tiên cho biết số lượng phần tử sẽ được thêm vào bộ sưu tập. Hơn nữa t Đối số thứ hai của he là số chỉ mục. Hơn nữa, giá trị của nó sẽ được sao chép và gán cho từng phần tử mới được thêm vào của bộ sưu tập. Dạng EXTEND này là bắt buộc đối với các bộ sưu tập có “phần tử không rỗng”.

Chúng ta có thể sử dụng Phương pháp thu thập PL / SQL EXTEND với cả ba loại tập hợp không?

Không, Phương pháp thu thập EXTEND chỉ có thể được áp dụng cho bộ sưu tập Bảng lồng nhau và VARRAY. Hơn nữa, không thể sử dụng EXTEND với Mảng liên kết của bộ sưu tập.

Bạn có thể chỉ cho chúng tôi thông số kỹ thuật của thủ tục EXTEND của Phương thức Thu thập trong Cơ sở dữ liệu Oracle không?

Chắc chắn, tại sao không! Dưới đây là các thông số kỹ thuật quá tải của PL / SQL Collection Method EXTEND -

EXTEND Thủ tục với một đối số:

PROCEDURE EXTEND (n pls_integer := 1);

Phương pháp thu thập EXTEND với hai đối số:

PROCEDURE EXTEND (n pls_integer, v pls_integer);

Khi nào chúng ta nên sử dụng phương pháp thu thập EXTEND trong mã của mình?

Khi bạn có một tập hợp (Bảng lồng nhau hoặc VARRAY) trong mã của bạn không được khởi tạo với đủ số phần tử. Trong trường hợp đó, trước tiên bạn phải sử dụng Phương pháp thu thập PL / SQL EXTEND.

Yêu cầu của Phương pháp thu thập PL / SQL EXTEND là gì?

Khai báo, Định nghĩa và Khởi tạo là ba bước mà chúng ta phải trải qua khi làm việc với bộ sưu tập trong Cơ sở dữ liệu Oracle. Nhưng trước khi lưu trữ dữ liệu vào chỉ mục chúng ta cần tạo một khe nhớ cho nó. Do đó, thủ tục PL / SQL Collection EXTEND giúp chúng ta tạo vùng nhớ cho dữ liệu đó.

Điều gì sẽ xảy ra nếu chúng tôi đã xóa hoặc cắt bớt phần cuối của bộ sưu tập?

Trong trường hợp đó, phương pháp Bộ sưu tập PL / SQL EXTEND sẽ bỏ qua các phần tử đã xóa khi nó chỉ định một chỉ mục mới.

Điều gì sẽ xảy ra nếu tôi áp dụng phương pháp thu thập EXTEND cho bảng lồng nhau chưa khởi tạo hoặc VARRAY?

Nếu phương pháp thu thập PL / SQL EXTEND được áp dụng cho tập hợp chưa được khởi tạo thì nó sẽ hiển thị COLLECTION_IS_NULL ngoại lệ.

Và điều gì sẽ xảy ra nếu tôi cố gắng MỞ RỘNG một VARRAY vượt quá giới hạn đã xác định của nó?

Nếu phương pháp thu thập EXTEND được sử dụng với VARRAY để mở rộng nó vượt quá giới hạn đã xác định thì bạn sẽ phải đối mặt với một ngoại lệ khác là SUBSCRIPT_BEYOND_LIMIT.

Này, Manish! Liệu chúng ta có bao giờ thấy một ví dụ về Phương pháp thu thập này EXTEND không?

Có, chúng tôi chắc chắn sẽ thực hiện việc trình diễn từng lệnh gọi EXTEND của thủ tục PL / SQL Collection mà chúng tôi đã đề cập ở trên. Ngoài lệnh gọi thủ tục kéo dài với VARRAY.

1. Thủ tục thu thập PL / SQL EXTEND không có đối số.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
END;
/

2. Quy trình thu thập MỞ RỘNG với một đối số.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND(3);
    nt_obj(1) := 10;
    nt_obj(2) := 20;
    nt_obj(3) := 30;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    DBMS_OUTPUT.PUT_LINE ('Data at index 2 is '||nt_obj(2)); 
    DBMS_OUTPUT.PUT_LINE ('Data at index 3 is '||nt_obj(3));
END;
/

3. Thủ tục thu thập PL / SQL EXTEND với hai đối số.

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_nestedTable IS TABLE OF number;
    nt_obj  my_nestedTable := my_nestedTable();
BEGIN
    nt_obj.EXTEND;
    nt_obj(1) := 28;
    DBMS_OUTPUT.PUT_LINE ('Data at index 1 is '||nt_obj(1));
    nt_obj.EXTEND(5,1);
    DBMS_OUTPUT.PUT_LINE ('Data at index 4 is '||nt_obj(4));
END;
/

4. Quy trình thu thập EXTEND (Không đối số) với VARRAY

SET SERVEROUTPUT ON;
DECLARE
    TYPE my_Varray IS VARRAY (5) OF NUMBER;
    vry_obj my_Varray := my_Varray();
BEGIN
    vry_obj.EXTEND;
    vry_obj(1) := 10;
    DBMS_OUTPUT.PUT_LINE('Data at index 1 is '||vry_obj(1));
END;
/

Mỗi LỘC trong số tất cả các LỘC trên (Ngoại trừ 4 LỘC) được giải thích chi tiết trong Video Hướng dẫn trên kênh YouTube của chúng tôi.

Hy vọng chúng ta đã thảo luận về tất cả các câu hỏi có thể có về PL / SQL Collection Method EXTEND mà bạn có thể gặp phải trong Kỳ thi chứng chỉ Oracle db cũng như trong Phỏng vấn của bạn. Ngoài ra, nếu bạn có bất kỳ bối rối nào về Chứng chỉ thì bạn có thể tham khảo Hướng dẫn Kiểm tra Chứng chỉ Cơ sở dữ liệu Oracle của chúng tôi.


  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àm cách nào tôi có thể xác nhận cơ sở dữ liệu là Oracle và nó đang sử dụng phiên bản SQL nào?

  2. Cơ sở dữ liệu và không gian bảng, sự khác biệt là gì?

  3. Trong trình kích hoạt Oracle, tôi có thể gán mới và cũ cho một biến kiểu hàng không?

  4. Lệnh Spool:Không xuất câu lệnh SQL vào tệp

  5. Tạo trình kích hoạt trong Oracle Express