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

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

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

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    PL/SQL學(xué)習(xí)筆記(二)

    Posted on 2007-02-11 19:55 dennis 閱讀(1604) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫技術(shù)

    定義并使用變量

    PL/SQL有四種類型:標(biāo)量類型,復(fù)合類型,引用類型(reference),LOB(Large Obejct)類型

    一.標(biāo)量類型

    最常用的就是標(biāo)量類型,是指只能存放單個(gè)數(shù)值的變量,包括數(shù)字類型、字符類型、日期類型和布爾類型,每種類型又包含相應(yīng)的子類型。

    常量標(biāo)量類型如下:

    ?

    VARCHAR2 (n)?, CHAR (n), NUMBER (p,s),DATE, TIMESTAMP , LONG , LONG ? RAW ,BOOLEAN,BINARY_INTEGER(僅PL / SQL使用),BINARY_FLOAT和BINARY_DOUBLE(10g新引入的)

    ?

    定義標(biāo)量:

    identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]

    使用標(biāo)量需要注意的是=號被:=取代,與delphi一樣的賦值符號@_@

    例子:

    ?

    v_name? VARCHAR2 ( 10 );

    v_rate?CONSTANTS?
    NUMBER ( 4 , 2 )?: = 3.04 ;

    ?

    為了防止定義的變量類型與表中的字段類型不一致,可以使用%TYPE來定義:

    ?

    v_name?employee.name % TYPE;

    ?

    如上面所示,v_name的類型就與表employee中的name字段類型一樣!!

    二。復(fù)合變量:

    用于存放多個(gè)值的變量稱為復(fù)合變量,包括PL/SQL記錄,PL/SQL表,嵌套表和VARRAY四種類型

    1。PL/SQL記錄

    類似于C/C++中的結(jié)構(gòu)概念:

    ?

    declare
    ???TYPE?employee_record?
    is ?RECORD(
    ?????id?employee.id
    % TYPE,
    ?????name?employee.name
    % TYPE,
    ?????email?employee.email
    % TYPE);
    ???em_record?employee_record;
    begin
    ???
    select ?id,name,email? into ?em_record? from ?employee? where ?name =& name;
    ???dbms_output.put_line(
    ' 雇員名: ' || em_record.name || ' ?雇員ID: ' || em_record.id);
    end ;?

    ?

    2。PL/SQL表,類似于數(shù)組概念,不同的是PL/SQL表允許負(fù)值下標(biāo),而且沒有上下限,如:

    ?

    declare
    ???TYPE?employee_table?
    is ? table ? of ?employee.name % TYPE? index ? by ?BINaRY_INTEGER;
    ???em_table?employee_table;
    begin
    ???
    select ?name? into ?em_table( - 1 )? from ?employee? where ?name =& name;
    ???dbms_output.put_line(
    ' 雇員名: ' || em_table( - 1 ));
    end ;?

    ?

    3。嵌套表,與PL/SQL表相似,不同的是嵌套表可以做表列的數(shù)據(jù)類型,而PL/SQL表不能,使用嵌套表作為表列時(shí),必須為其指定專門的存儲(chǔ)表,如:

    ?

    create ? or ? replace ?TYPE?emp_type?? as ?OBJECT(
    ??name?
    VARCHAR2 ( 10 ),salary? NUMBER ( 6 , 2 ),hiredate?DATE);

    CREATE ? OR ? REPLACE ?TYPE?emp_array? IS ? TABLE ? OF ?emp_type;

    ?
    CREATE ? TABLE ?department(
    ????deptno?
    NUMBER ( 2 ),dname? VARCHAR2 ( 10 ),
    ????employee?emp_array)NESTED?
    TABLE ?employee?STORE? as ?employee_dept;

    ?

    4。VARRAY(變長數(shù)組),與嵌套表相似,也可以做為表列的數(shù)據(jù)類型,但是嵌套表沒有個(gè)數(shù)限制,而VARRAY有個(gè)數(shù)限制,如:

    CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;

    三。引用變量(reference)

    類似于C++中的指針或者JAVA中引用的概念,用于存放數(shù)值指針的變量,使用此變量,可以使得應(yīng)用程序共享相同對象,降低占用空間。此類有兩種類型:游標(biāo)(REF CURSOR)和對象類型(REF OBJECT)

    1。REF CURSOR,定義時(shí)同時(shí)指定SELECT語句的游標(biāo)稱為顯式或者靜態(tài)游標(biāo),在打開時(shí)才指定SELECT語句的游標(biāo)稱為動(dòng)態(tài)游標(biāo),如:

    ?

    ? DECLARE ?
    ?????TYPE?c1?
    IS ?REF? CURSOR ;
    ?????emp_cursor?c1;
    ?????v_name?employee.name
    % TYPE;
    ?????v_sal?employee.salary
    % TYPE;
    ????
    begin
    ?????
    open ?emp_cursor? for
    ???????
    SELECT ?name,salary? FROM ?EMPLOYEE?;
    ?????LOOP
    ???????
    FETCH ?emp_cursor? INTO ?v_name,v_sal;
    ???????
    EXIT ? WHEN ?emp_cursor % NOTFOUND;
    ???????dbms_output.put_line(v_name);
    ?????
    END ?LOOP;
    ?????
    close ?emp_cursor;
    ????
    end ;??

    ??

    2。REF OBJECT,與JAVA的引用概念相同,存儲(chǔ)的是指向?qū)ο蟮闹羔?/p>

    ?

    四。LOB類型

    LOB類型是指用于存儲(chǔ)大批量數(shù)據(jù)的變量,包括內(nèi)部的3種(CLOB,BLOB,NCLOB)和外部LOB(BFILE)。

    CLOB,NCLOB用于存儲(chǔ)大量的字符數(shù)據(jù)。

    BLOB用于存儲(chǔ)大批量二進(jìn)制數(shù)據(jù)(如圖象)。

    BFILE則存儲(chǔ)指向OS文件的指針。

    主站蜘蛛池模板: 91国内免费在线视频| 免费电影在线观看网站| 亚洲人成高清在线播放| 日韩视频免费在线| 99久久婷婷免费国产综合精品| 久久精品国产亚洲AV麻豆王友容| 国产成在线观看免费视频| 日韩精品免费一线在线观看| 亚洲国产美国国产综合一区二区 | 亚洲精品成人久久久| 久久久久久国产精品免费免费男同 | 亚洲福利一区二区精品秒拍| 日韩精品免费一区二区三区| 日本不卡免费新一区二区三区| 国产成人精品日本亚洲11| 亚洲中文久久精品无码ww16| 美女被免费喷白浆视频| ww在线观视频免费观看w| 亚洲av乱码一区二区三区| 亚洲色爱图小说专区| 日韩a在线观看免费观看| 色欲A∨无码蜜臀AV免费播| 羞羞视频网站免费入口| 亚洲性69影院在线观看| 亚洲综合无码AV一区二区| 午夜影视在线免费观看| 亚欧免费一级毛片| 有色视频在线观看免费高清在线直播| 亚洲图片校园春色| 亚洲va无码va在线va天堂| 四虎精品亚洲一区二区三区 | 亚洲国产精品无码av| 在线观看免费无码视频| 国产三级免费电影| 久久丫精品国产亚洲av| 国产成人涩涩涩视频在线观看免费 | 美女视频免费看一区二区| 亚洲综合伊人制服丝袜美腿| 亚洲成av人在线视| 国产成人精品日本亚洲专区| 国产成人免费片在线视频观看|