<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    隨筆-230  評論-230  文章-8  trackbacks-0

    ?

    標(biāo)量數(shù)據(jù)類型

    ?

    Number 系列及其子類型

    Char 系列及其子類型

    Date 等比列及其子類型

    Interval 系列 (oracle 9i 特有 )

    Timestamp 系列 (oracle 9i 特有 )

    MSLABEL 系列

    復(fù)合數(shù)據(jù)類型

    記錄類型 (record) Index-By

    嵌套表、 Varray

    對象數(shù)據(jù)類型

    Object 類型、 OBLECT REF LOB 類型、

    Sys.AnyType SYS.ADYDATA SYS.ANYDATASET(oracle 9i 特有 )

    其它 pl/sql 特有的數(shù)據(jù)類型

    BOOLEAN BINARY_INTEGER PLS_INTEGER %TYPE REF CURSOR

    SYS_REFCURSOR(oracle 9i 特有 )

    用戶定義子類型

    記錄

    ?????? pl/sql 中可以定義三種類型的記錄 : 顯式定義的記錄,面向數(shù)據(jù)庫表的記錄,面向游標(biāo)的記錄。

    ?

    記錄的定義其語法如下:

    Type record_type_name is record(

    ?????? Field_name1 datatype not null default

    )

    ?

    例子:

    Type person_rec? is record (

    ?????? Name varchar2(100);

    ??? Address varchar2(200);

    );

    記錄類型變量的聲名

    ? vperson person_rec;

    ?

    type …record 只是一種操象的定義,因此,它不能由它自己使用, type.. record 不會占用任何資源,直到專名該類型的變量時(shí)才占用資源

    ?

    記錄類型的使用

    ? 記錄類型的變量定義以后,接下來就是使用記錄來處理數(shù)據(jù)。

    ? 1 、訪問記錄中的遠(yuǎn)素

    ? 2 、測試記錄是否相等

    ????? 記錄比較應(yīng)比較完記錄的每個(gè)字段 , 看它們是否相等,把記錄看作整體來比較的做的作法是錯(cuò)誤的。

    記錄的使用就像一個(gè)對象。可以對它進(jìn)行賦值, oracle 9i 中有幾種賦值方法:

    1)??? 對各個(gè)字段賦值

    2)??? 使用 select into 語句填充一個(gè)記錄

    3)??? 使用 fetch into 語句填充一個(gè)記錄

    4)??? 使用一個(gè)記錄為另一個(gè)記錄賦值(聚集賦值)

    ?

    其它記類型

    1???????? 面向表的記錄類型

    ? 定義 :

    ?? Record_var_name? table_name%rowtype;

    ????????????? ? 使用:

    ????????? Select * into record_var_name from hrc_tab where id=?

    2???????? 面向游標(biāo)的記錄類型

    Declare

    ?? Cursor csr_hrc is select * from hrc_tab order by 1;

    ?? hrc_rec csr_hrc%rowtype;

    begin

    ?? …….loop

    ????????????? Fetch csr_hrc into hrc_rec

    ??????? Exit when csr_hrc%not found

    …..

    ?? End loop;

    end;

    涉及整個(gè) pl/sql 記錄的 DML 操作(特指 insert ,update select

    ?Insert into hrc_tab values record_var_name

    ?

    ?Update ?hrc_tab set ROW=record_var_name where hrc_code=’99’

    ?

    Index-by

    ? Index-by 表是一同一個(gè)與數(shù)組類似的同質(zhì)元素的集合組成的一種復(fù)合數(shù)據(jù)類型。集合中的元素稀 ? 分布且沒有限定邊界,只是由一個(gè)整數(shù)索引將其連接在一起。

    ?

    定義 Index-by 表的型

    ?? Type table_name_type is table of type [not null] index by binary_integer

    下面是一個(gè)聲明這種類型的示例

    ? Type num_tab is table of number index by binary_integer

    聲明表類型的變量

    ? V_num_tab num_tab;

    Index-by 表的使用

    index-by 表是兩列的(一列索引,另一列是對應(yīng)的值)結(jié)構(gòu),

    index-by pl/sql 特有,所以在 sql 中它們自然就不可用,另外,也不能存儲在數(shù)據(jù)庫中,這樣導(dǎo)致不能在 index-by 表中使用 select ,insert ,update delete SQL? DML 操作。對 index-by 表來說沒有 commit rollback ,一個(gè)例子:

    ?declare

    ??? type num_tab is table of number index by binary_integer;

    ??? v_example_tab num_tab;

    ? v_num number:=13;

    begin

    ?????? v_example_tab(1):=1001;

    ??? v_example_tab (0):=1002;

    ??? v_example_Tab(-10):=1003

    ??? v_example_tab(v_num):=1004p;

    ??? dbms_output.put_line(to_char(v_example_tab(-10))|| …..)

    end;

    ?

    可以使用任何與 binary_integer 相兼容的文字,變量或表達(dá)式作為 index-by 表的索引

    ?

    可樣也可以把一個(gè) index-by 表賦值給另一個(gè) index-by 表。

    ?declare

    ?? type num_tab is table of number index by binary_integer;

    ?? v_example_tab1? num_tab;

    v_example_tab2 num_tab;

    ?begin

    ?????? v_example_tab1:= v_example_tab2;

    end;

    ?

    index-by 表中只有在賦值時(shí)才可以創(chuàng)建行,因些在賦值以前,行是一存在的,這是因?yàn)?/span> index-by 表沒有上下界,訪問沒定義的行會出現(xiàn) N)_DATA_FOUND 行。

    ?

    Index-by 表的填充有三種方法:

    ?1 通過賦值創(chuàng)建元素行,

    ?2 使用 loop index-by 表的行賦值

    ?3 用一個(gè) index-by 表為另一個(gè) index-by 表賦值

    第一種方法前面用了,第二種方法就是一個(gè)循環(huán)了,如 :

    Declare

    ?? Type num_tab is table of number index by binary_integer;

    ?? V_Example_tab num_tab;

    Begin

    ?????? For idx in 1..10 loop

    ?????? V_example_tab(idx) :=(2*idx)+1

    ??? End loop;

    End;

    ?

    刪除 Index-by

    ?????? 有兩種方法:

    1、? 定義一下與已填充的 index-by 表類型相同的空的 index-by 表,然后用該表執(zhí)行聚集賦值

    2、? 使用 index-by 表的 delete 方法。

    Index-by 表的方法:

    ?

    方法

    用途

    語法

    Exits

    檢查某個(gè)元素是否存在,如果存在,返回值是 true ,反之面,返回 false

    Table_name.exists(index)

    Count

    返加已確定的元素個(gè)數(shù)

    Table_name.count

    Delete

    刪除一部墜毀(也包括沒定義的)或全部元素,如刪除開始索引與結(jié)束索引之間的表元素

    Table_name.delete 刪全部

    Table_name.delete(index) 刪除指定索引的

    fIrst

    返回 index-by 表中第一行的索引值,如果不存在就返回 null

    Table_name.first

    Last

    返回 index-by 表中最后一行的,不存在返回 null

    Table_name.last

    Next

    返回 index-by 表中由特定索引指定的下一行的索引,不存在返回 null

    Table_name.next

    ?

    Prior

    返回 index-by 表中由特定索引指定的前一行索引,如果不存在返回 null

    Table_name.prior

    ?

    方法使用例子:

    If? v_example.exists(100)? then

    ?????? dbms_output.put_line(to_char(v_example.exists(100)));

    End if ;

    ?

    For udx? in 1..v_example.count loop? // 用這種方法必須要確定行是連續(xù)填充的,下界是一個(gè) // 定的值。

    ?????? Dbms_output.put_line(to_char(v_example_tab(idx)));

    End loop;

    ?

    V_example_tab.delete(1) // 刪除第一個(gè)索引的記錄

    V_example_tab.delete(2,5);// 刪除第 2 至第 5 個(gè)索引記錄

    V_example_tab.delete;// 刪除所有記錄

    ?

    使用 first,last,next 方法的例子

    Idx:=v_example_tab.first;

    Loop

    ?????? Dbms_output.put_line();

    Exit when? idx:=v_example_tab.last;

    Idx:=v_example_tab.next();

    End loop;

    ?

    這樣遍歷一個(gè) index-by 表是最好的,表的記錄可以不連續(xù)。

    ?

    記錄的 Index-by

    ?

    定義 index-by 表的幾個(gè)步驟

    ?

    1、? 定義記錄類型

    2、? 定義記錄類型的表類型

    3、? 定義表類型的變量

    ?

    一個(gè)例子:

    Declare

    ?Type hrc_org_Rdc is record(

    ????????????? Hrc_org_id? number,

    ??????? Hrc_descr var_char2(200)

    ? )

    Type hrc_org_tab is table of hrc_org_rec index by binary_integer;

    Begin

    ?? Null;

    End;

    ?

    聯(lián)合數(shù)組

    ?

    oracle 9i release 2 中,可以使用 varchar2 類型的索引代規(guī) binary_integer 類型的索引來定義 index-by 表,用 varchar2 索引作為數(shù)據(jù)庫表的關(guān)鍵字,可以提高數(shù)據(jù)庫的性能。

    例子:

    Declare

    ? Type site_ary is table of number index by varchar2(20);

    ? V_example_array site_ary;

    Begin

    ?????? V_example_array(‘xx’):=10;

    ??? V_example_array(‘yy’):=200;

    End;

    ?

    ?

    ?

    posted on 2006-09-15 14:20 有貓相伴的日子 閱讀(1274) 評論(0)  編輯  收藏 所屬分類: pl/sql
    本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
    主站蜘蛛池模板: 亚洲人成无码网WWW| 亚洲AV无码专区国产乱码4SE| 人妻18毛片a级毛片免费看| 亚洲AV午夜成人片| 人人狠狠综合久久亚洲婷婷| 成年女人男人免费视频播放| 亚欧国产一级在线免费| 亚洲伊人久久精品| 久久亚洲国产精品五月天婷| 久久久久久国产精品免费免费| 国产日韩久久免费影院| 国产成人精品亚洲2020| 国产gv天堂亚洲国产gv刚刚碰| 久久精品免费一区二区喷潮| 毛片a级毛片免费观看品善网| 无码永久免费AV网站| 国产色无码精品视频免费| 亚洲国产精品成人AV在线 | igao激情在线视频免费| www一区二区www免费| 在线观看免费黄色网址| 无套内射无矿码免费看黄| 亚洲一区二区三区高清视频| 亚洲Av熟妇高潮30p| 亚洲国产一区明星换脸| 麻豆国产人免费人成免费视频 | 亚洲中文字幕一二三四区苍井空| 亚洲色欲色欲www| 99亚洲精品卡2卡三卡4卡2卡| 亚洲第一网站免费视频| 亚洲人成在线播放网站| 免费大黄网站在线看| 日韩在线免费电影| 无码日韩人妻av一区免费| 日本一道本高清免费| 亚洲最大av无码网址| 亚洲影院在线观看| 久久九九亚洲精品| 亚洲人成在久久综合网站| 男女超爽视频免费播放| 污污视频免费观看网站|