Tuyên bố FORALL với mệnh đề giới hạn dưới và trên
Trong hướng dẫn trước, chúng ta đã biết rằng có ba mệnh đề ràng buộc mà chúng ta có thể sử dụng với câu lệnh FORALL để tối ưu hóa các truy vấn DML. Từ ba mệnh đề ràng buộc đó, chúng ta sẽ khám phá mệnh đề đầu tiên, tức là Giới hạn dưới và Giới hạn trên trong hướng dẫn này.
Mệnh đề Giới hạn dưới &Giới hạn trên của câu lệnh FORALL là gì?
Như tên cho thấy, Với mệnh đề Lower &Upper Bound, chúng ta phải chỉ định phạm vi hợp lệ của các số chỉ mục liên tiếp của tập hợp.
Có quy tắc nào để sử dụng mệnh đề Giới hạn dưới &Giới hạn trên với câu lệnh FORALL không?
Mệnh đề Lower &Upper Bound chỉ có thể được sử dụng khi tập hợp mà bạn đang tham chiếu trong câu lệnh DML của mình là Dense . Nếu bộ sưu tập tham chiếu thưa thớt thì bạn có thể muốn sử dụng các mệnh đề ràng buộc khác mà chúng ta sẽ thảo luận trong các hướng dẫn trong tương lai.
Để chương trình của bạn được thực thi thành công, bạn cần đảm bảo rằng bạn đã tuân theo tất cả các quy tắc của câu lệnh FORALL cùng với quy tắc đã đề cập ở trên của mệnh đề Giới hạn dưới &Giới hạn trên. Tìm hiểu thêm về câu lệnh FORALL tại đây.
Hãy làm một ví dụ về câu lệnh FORALL với mệnh đề Giới hạn dưới &Giới hạn trên trong Cơ sở dữ liệu Oracle.
Nhưng trước khi nhảy vào ví dụ, chúng ta cần hiểu một điều; Câu lệnh FORALL hoạt động tương tự như mệnh đề thu thập hàng loạt nhưng theo cách ngược lại. Ví dụ:với thu thập hàng loạt, chúng tôi đang tìm nạp dữ liệu từ các bảng và lưu trữ nó vào bộ sưu tập, nhưng bây giờ với câu lệnh FORALL, chúng tôi sẽ tìm nạp dữ liệu từ bộ sưu tập và lưu trữ nó vào bảng.
Trong phần trình bày này, chúng ta sẽ làm ba điều để hiểu khái niệm câu lệnh FORALL với mệnh đề Lower &Upper Bound. Ba điều này là:
-
Tạo bảng.
Đầu tiên chúng ta sẽ tạo một bảng. Chúng tôi sẽ sử dụng bảng này để kết xuất dữ liệu mà chúng tôi sẽ tìm nạp từ bộ sưu tập.
-
Tạo và điền Bộ sưu tập.
Bước này là tùy chọn nếu bạn đã có một bộ sưu tập với một số dữ liệu. Nếu bạn không thì hãy theo tôi cùng. Đối với phần trình diễn, tôi sẽ tạo và điền vào một bộ sưu tập.
-
Viết câu lệnh FORALL.
Khi bạn đã chuẩn bị xong bảng và bộ sưu tập, hãy viết câu lệnh FORALL. Đối với phần trình diễn, tôi sẽ viết một câu lệnh FORALL sẽ lấy dữ liệu từ bộ sưu tập và lưu trữ nó vào bảng. Đó cũng sẽ là một minh chứng cho câu lệnh FORALL với INSERT DML.
Hãy làm ví dụ về câu lệnh PL / SQL FORALL với giới hạn Dưới và Giới hạn trên.
SET SERVEROUTPUT ON; CREATE TABLE tut_77 ( Mul_tab NUMBER(5) );
Đó sẽ là bảng của chúng ta sẽ chứa dữ liệu. Tiếp theo, chúng ta sẽ viết khối PL / SQL.
DECLARE -- Declare the collection TYPE My_Array IS TABLE OF NUMBER INDEX BY PLS_INTEGER; col_var My_Array; --Declare a variable for holding the total number of records of the table tot_rec NUMBER; BEGIN --Populate the collection FOR i IN 1..10 LOOP col_var (i) := 9*i; END LOOP; -- Write the FORALL statement. FORALL idx IN 1..10 INSERT INTO tut_77 (mul_tab) VALUES (col_var (idx)); --Get the total number of records from the table SELECT count (*) INTO tot_rec FROM tut_77; DBMS_OUTPUT.PUT_LINE ('Total records inserted are '||tot_rec); END; /
Giải thích Phần Khai báo
Trong phần khai báo của đoạn mã này, chúng tôi đã khai báo một mảng liên kết với tên “my_Array” cùng với biến bộ sưu tập của nó. Cũng là một biến phụ với tên tot_rec của kiểu dữ liệu Số. Biến này sẽ chứa tổng số bản ghi được lưu trữ trong bảng của chúng tôi.
Trong phần thực thi, chúng tôi đã thực hiện ba nhiệm vụ. Đầu tiên, bằng cách sử dụng Vòng lặp FOR, chúng tôi đã điền bộ sưu tập của mình với bảng cửu chương 9. Thứ hai, sử dụng câu lệnh FORALL, chúng tôi lấy dữ liệu từ bộ sưu tập và lưu trữ nó vào bảng chúng tôi đã tạo. Thứ ba, sử dụng biến tot_rec với câu lệnh SELECT-INTO, chúng tôi hiển thị lại tổng số hàng được lưu trữ trong bảng.
Tôi cũng đã thực hiện một video về chủ đề tương tự, nơi tôi đã giải thích chi tiết từng dòng mã ở trên. Tôi đề nghị bạn kiểm tra nó ra.
Đó là phần hướng dẫn câu lệnh PL / SQL FORALL với mệnh đề Lower &Upper Bound trong Cơ sở dữ liệu Oracle. Hy vọng bạn thích xem. Hãy chắc chắn Thích &Chia sẻ blog này với bạn bè của bạn trên phương tiện truyền thông xã hội của bạn. Bạn cũng có thể liên hệ với tôi trên trang Facebook của tôi.
Cảm ơn và chúc một ngày tốt lành.