包中定義集合類型
更新時(shí)間:
您可以在包(package)中定義變長(zhǎng)數(shù)組、嵌套表以及關(guān)聯(lián)數(shù)組三種集合類型。
注意事項(xiàng)
與局部的集合類型不同的是,該類型會(huì)隨著包的定義被持久化在系統(tǒng)表中,在包刪除時(shí)被級(jí)聯(lián)刪除。
示例
以下是一個(gè)包集合類型和局部集合類型轉(zhuǎn)換的示例。
CREATE OR REPLACE PACKAGE pkg AS
TYPE NumberList IS TABLE OF NUMBER;
PROCEDURE print (nums NumberList);
END pkg;
CREATE OR REPLACE PACKAGE BODY pkg AS
PROCEDURE print (nums NumberList) IS
BEGIN
FOR i IN nums.FIRST..nums.LAST LOOP
RAISE NOTICE '%', nums(i);
END LOOP;
END;
END;
DECLARE
TYPE CharList IS TABLE OF VARCHAR(10);
n1 pkg.NumberList := pkg.NumberList(1,2); -- 使用包的集合類型
n2 CharList := CharList('3','4'); -- 使用局部集合類型
BEGIN
pkg.print(n1); -- 傳入包的集合類型的變量
pkg.print(n2); -- 傳入局部變量, 但會(huì)根據(jù)元素類型進(jìn)行類型轉(zhuǎn)換
END;
結(jié)果顯示如下:
NOTICE: 1
NOTICE: 2
NOTICE: 3
NOTICE: 4
DO
以下是一個(gè)包集合類型和全局集合類型轉(zhuǎn)換的示例。
-- 聲明全局集合類型
CREATE OR REPLACE TYPE NumList IS TABLE OF NUMBER;
-- 使用上一個(gè)示例的包過程
DECLARE
n NumList := NumList(5,6);
BEGIN
pkg.print(n);
END;
結(jié)果顯示如下:
NOTICE: 5
NOTICE: 6
DO
文檔內(nèi)容是否對(duì)您有幫助?