首頁  >  文章  >  web前端  >  PL/SQL 中的巢狀表集合

PL/SQL 中的巢狀表集合

Patricia Arquette
Patricia Arquette原創
2024-10-13 16:28:30733瀏覽

Nested Tables Collection in PL/SQL

PL/SQL 中的巢狀表集合

PL/SQL 中的巢狀表是一種集合類型,可讓您儲存無限數量的相同類型的元素。它們對於以結構化格式保存資料集特別有用,非常適合需要管理多行相關資料的場景。

簡單定義

巢狀表:巢狀表是一種集合類型,可以容納任意數量的元素(相同資料型別)。與 VARRAY 不同,嵌套表可以是稀疏的,這意味著它們的索引中可以有間隙。

語法與結構

文法

  1. 建立巢狀表類型:

建立或取代類型 type_name 作為 element_type 的表;

type_name:巢狀表類型的名稱。

element_type:巢狀表中元素的資料類型(例如,VARCHAR2、NUMBER 或物件類型)。

  1. 宣告巢狀表變數:

變數名稱型別名稱;

  1. 操作巢狀表的方法:

EXTEND(n):將巢狀表的大小增加 n 個元素。

TRIM(n):將巢狀表的大小減少 n 個元素。

DELETE(i):刪除索引 i 處的元素。

COUNT:傳回巢狀表中的元素數量。

範例:巢狀的星期幾

這是一個綜合範例,示範如何為一週中的幾天建立巢狀表、填滿它並顯示內容。

第 1 步:建立巢狀表類型

首先,我們定義一個巢狀表類型來保存日期的名稱。

建立或取代類型 DaysOfWeek 作為 VARCHAR2(15) 的表格;

第 2 步:宣告並填入巢狀表

接下來,我們聲明一個這種類型的變量,並用星期幾填充它。

聲明
天數 DaysOfWeek; -- 宣告一個巢狀表變數
開始
-- 初始化巢狀表
天 := DaysOfWeek();

-- Add elements to the nested table
days.EXTEND(7); -- Extend the size by 7 for all days of the week
days(1) := 'Monday';
days(2) := 'Tuesday';
days(3) := 'Wednesday';
days(4) := 'Thursday';
days(5) := 'Friday';
days(6) := 'Saturday';
days(7) := 'Sunday';

-- Display the elements in the nested table
FOR i IN 1 .. days.COUNT LOOP
    DBMS_OUTPUT.PUT_LINE('Day ' || i || ': ' || days(i));
END LOOP;

結束;
/

詳細說明

  1. 建立類型:

語句 CREATE OR REPLACE TYPE DaysOfWeek AS TABLE OF VARCHAR2(15);定義了一個名為 DaysOfWeek 的新嵌套表類型,它可以容納最多 15 個字元長的字串。此類型將用於儲存日期的名稱。

  1. 聲明巢狀表:

在 DECLARE 區塊中,days 被宣告為 DaysOfWeek 類型的變數。這個變數將保存我們的天數集合。

  1. 初始化巢狀表:

天 := DaysOfWeek();將 days 變數初始化為 DaysOfWeek 型別的空巢狀表。

  1. 新增元素:

days.EXTEND(7);增加了 days 巢狀表的大小以容納 7 個元素(一個元素代表一週的每一天)。

每一天都被分配到對應的索引:

天(1) := '星期一';

天(2) := '星期二';

天(3) := '星期三';

天(4) := '星期四';

天(5) := '星期五';

天(6) := '星期六';

天(7) := '星期日';

  1. 顯示天數:

FOR 循環使用 days.COUNT 迭代 days 巢狀表,以確定存在多少個元素。

DBMS_OUTPUT.PUT_LINE 每天輸出及其索引。

輸出

執行此區塊時,輸出將是:

第一天:星期一
第 2 天:星期二
第三天:星期三
第四天:星期四
第五天:星期五
第六天:星期六
第七天:週日

結論

此範例示範如何在 PL/SQL 中定義、填入和操作巢狀表。巢狀表是通用的結構,可讓您有效地處理資料集合,並且它們可用於需要動態資料管理的各種應用程式。

以上是PL/SQL 中的巢狀表集合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn