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

Oracle PL / SQL Collections - Tạo Bảng lồng nhau trong Cơ sở dữ liệu

Trong Oracle, một bảng lồng nhau có thể được lưu trữ dưới dạng một cột cơ sở dữ liệu. Điều này có nghĩa là toàn bộ bảng lồng nhau được chứa trong một hàng của bảng cơ sở dữ liệu và mỗi hàng của cơ sở dữ liệu có thể chứa một bảng lồng nhau khác nhau. Để lưu một bảng lồng nhau trong cơ sở dữ liệu, bạn phải sử dụng CREATE TYPE câu lệnh để tạo kiểu bảng lồng nhau, thay vì một câu lệnh kiểu trong khối PL / SQL.

Bằng cách sử dụng CREATE TYPE , kiểu được lưu trữ trong từ điển dữ liệu và do đó có sẵn để sử dụng làm kiểu cột. Ví dụ sau minh họa cách tạo bảng lồng nhau dưới dạng cột cơ sở dữ liệu.

Oracle PL / SQL - Tạo Bảng lồng nhau trong Cơ sở dữ liệu

CREATE TYPE BookObj AS OBJECT (
title VARCHAR2(40),
author VARCHAR2(40),
catalog_number NUMBER(4)
);

CREATE TYPE BookList AS TABLE OF BookObj;

CREATE TABLE course_material (
department CHAR(3),
course NUMBER(3),
required_reading BookList )
NESTED TABLE required_reading STORE AS required_tab;

Có một số điều cần lưu ý về danh sách trên và tạo các bảng lồng nhau trong cơ sở dữ liệu:

  • Loại bảng được thiết kế với CREATE TYPE để nó có thể được lưu trữ trong từ điển dữ liệu.
  • Loại bảng được sử dụng trong định nghĩa bảng, giống như một đối tượng cột.
  • Đối với mỗi bảng lồng nhau trong một bảng cơ sở dữ liệu nhất định, NESTED TABLE mệnh đề là bắt buộc. Mệnh đề này cho biết tên của bảng cửa hàng.

Bảng lưu trữ là một bảng do hệ thống tạo được sử dụng để lưu trữ dữ liệu thực tế trong bảng lồng nhau. Dữ liệu này không được lưu trữ nội tuyến với phần còn lại của các cột trong bảng; nó được lưu trữ riêng.

required_reading cột sẽ lưu trữ một REF vào required_tab bảng, nơi danh sách sách sẽ được lưu trữ. Đối với mỗi hàng của course_material , Requi_reading chứa REF cho các hàng tương ứng trong Requi_tab.

LƯU Ý

Bảng cửa hàng (required_tab trong ví dụ trên) có thể tồn tại trong một lược đồ khác và có thể có các tham số lưu trữ khác với bảng chính. Bảng cửa hàng có thể được mô tả và tồn tại trong user_tables , nhưng không thể truy cập trực tiếp.

Nếu bạn cố gắng truy vấn hoặc sửa đổi trực tiếp bảng lưu trữ, bạn sẽ gặp lỗi Oracle "ORA-22812:không thể tham chiếu bảng lưu trữ của cột bảng lồng nhau". Nội dung của bảng lưu trữ được thao tác thông qua SQL trên bảng chính.

Xem thêm:

  • Oracle PL / SQL - Bộ sưu tập (Bảng lồng nhau)
  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 để sử dụng một tham số động trong mệnh đề IN của truy vấn có tên JPA?

  2. Oracle.DataAccess.Client Dependencies

  3. Ghi lại với ngày tối đa

  4. Làm thế nào để trả về một RefCursor từ hàm Oracle?

  5. Tắt tất cả các ràng buộc bảng trong Oracle