oracle開發學習篇之集合函數

集合函數;
declare 
        type list_nested is table of varchar2(100) not null;
        v_all list_nested := list_nested('changan','hubei','shanghai','beijing','Android','Java-Android');
BEGIN
        v_all.delete(1);
        for x in v_all.first .. v_all.last loop
            dbms_output.put_line(v_all(x));
        end loop;
        --dbms_output.put_line('list leng:' || v_all.count );
end;
/


declare 
        type list_nested is table of varchar2(100) not null;
        v_all list_nested := list_nested('changan','hubei','shanghai','beijing','Android','Java-Android');
BEGIN
        v_all.delete(1,3); --指定刪除索引範圍的數據;
        for x in v_all.first .. v_all.last loop
            dbms_output.put_line(v_all(x));
        end loop;
        dbms_output.put_line('list leng:' || v_all.count );
end;
/



declare 
        type list_nested is table of varchar2(100) not null;
        v_all list_nested := list_nested('changan','hubei','shanghai','beijing','Android','Java-Android');
BEGIN
        if v_all.EXISTS(1) then
            dbms_output.put_line('索引爲1的數據存在');
        end if;
        if not v_all.EXISTS(10) then
            dbms_output.put_line('索引爲10的數據不存在');
        end if;
    end;
/



declare
        type list_nested is table of varchar2(100) not null;
        v_all list_nested := list_nested('FireFox','firefox.com','www.firefox.com');
begin
        dbms_output.put_line('原始長度' || v_all.count);
        v_all.extend(2);
        dbms_output.put_line('擴充以後長度' || v_all.count);
        v_all(4) := 'www.google.com';
        v_all(5) := 'Google.com';
        for x in v_all.first  .. v_all.last loop
            dbms_output.put_line(v_all(x));
        end loop;
    end;
/

範例
    擴充集合長度,並使用已有內容填充
declare
        type list_nested is table of varchar2(100) not null;
        v_all list_nested := list_nested('FireFox','firefox.com','www.firefox.com');
begin
        dbms_output.put_line('原始長度' || v_all.count);
        v_all.extend(2 , 3);
        dbms_output.put_line('擴充以後長度' || v_all.count);
        for x in v_all.first  .. v_all.last loop
            dbms_output.put_line(v_all(x));
        end loop;
    end;
/


範例
    集合函數count limit
declare
    type list_varray is  varray(20) of varchar2(100);
    v_info list_varray := list_varray('firefox.com','www.firefox.com','www.oracle.com');
begin
    dbms_output.put_line('數組集合的最大長度' || v_info.limit);
    dbms_output.put_line('數組集合的數據量' || v_info.count);
end;
/


declare
        type info_index is table of varchar2(20) index by PLS_INTEGER;
        v_info info_index;
        v_foot number;
begin
        v_info(1) := 'FireFox';
        v_info(10) := 'Java';
        v_info(-10) := 'oracle';
        v_info(-20) := 'EJB';
        v_info(30) := 'Android';
        v_foot := v_info.first;
        while (v_info.exists(v_foot)) loop
            dbms_output.put_line('v_info (' || v_foot ||') = ' || v_info(v_foot);
            v_foot := v_info.next(v_foot) ;
        end loop;
    end;
/ 


declare
        type info_index is table of varchar2(20) index by PLS_INTEGER;
        v_info info_index;
        v_foot number;
begin
        v_info(1) := 'FireFox';
        v_info(10) := 'Java';
        v_info(-10) := 'oracle';
        v_info(-20) := 'EJB';
        v_info(30) := 'Android';
        DBMS_OUTPUT.put_line('索引爲10的下一個索引是:' || v_info.next(10));
        dbms_output.put_line('索引爲-10的上一個索引是:' || v_info.prior(-10));
    end;
/ 


declare 
        type list_varray is varray(8) of varchar2(50);
        v_info list_varray :=  list_varray('FireFox','www.FireFox','www.Google.com','EJB');
begin
        dbms_output.put_line();
        for x in v_info.first .. v_info.last loop
                dbms_output.put_line(v_info(x));
        end loop;
    end;
/
declare 
        type list_varray is varray(8) of varchar2(100);
        v_info list_varray := list_varray('FireFox','www.firefox.com','oracle','oracle_username');
begin
        dbms_output.put_line('刪除集合以前的數量:' || v_info.count);
        v_info.trim; -- 刪除一個數據;
        dbms_output.put_line('v_info.trim 刪除集合以後的數據量 :' || v_info.count);
        v_info.trim(2); -- 刪除2個數據;
        dbms_output.put_line('v_info.trim(2) 刪除集合以後的數據量 :' || v_info.count);
        for x in v_info.first .. v_info.last loop
            dbms_output.put_line(v_info(x));
        end loop;
    end;
/
相關文章
相關標籤/搜索