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

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

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

    莊周夢蝶

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

    PL/SQL學習筆記(二)

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

    定義并使用變量

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

    一.標量類型

    最常用的就是標量類型,是指只能存放單個數值的變量,包括數字類型、字符類型、日期類型和布爾類型,每種類型又包含相應的子類型。

    常量標量類型如下:

    ?

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

    ?

    定義標量:

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

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

    例子:

    ?

    v_name? VARCHAR2 ( 10 );

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

    ?

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

    ?

    v_name?employee.name % TYPE;

    ?

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

    二。復合變量:

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

    1。PL/SQL記錄

    類似于C/C++中的結構概念:

    ?

    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表,類似于數組概念,不同的是PL/SQL表允許負值下標,而且沒有上下限,如:

    ?

    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表相似,不同的是嵌套表可以做表列的數據類型,而PL/SQL表不能,使用嵌套表作為表列時,必須為其指定專門的存儲表,如:

    ?

    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(變長數組),與嵌套表相似,也可以做為表列的數據類型,但是嵌套表沒有個數限制,而VARRAY有個數限制,如:

    CREATE TYPE TEST_ARRAY IS VARRAY(20) OF emp_type;

    三。引用變量(reference)

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

    1。REF CURSOR,定義時同時指定SELECT語句的游標稱為顯式或者靜態游標,在打開時才指定SELECT語句的游標稱為動態游標,如:

    ?

    ? 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的引用概念相同,存儲的是指向對象的指針

    ?

    四。LOB類型

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

    CLOB,NCLOB用于存儲大量的字符數據。

    BLOB用于存儲大批量二進制數據(如圖象)。

    BFILE則存儲指向OS文件的指針。

    主站蜘蛛池模板: 久久九九全国免费| 久久久久久久久无码精品亚洲日韩| 亚洲春色在线视频| 亚洲乱码无码永久不卡在线| 亚洲一级特黄大片无码毛片| 不卡精品国产_亚洲人成在线| 国产午夜亚洲不卡| 久久亚洲中文字幕精品一区四| 亚洲天堂免费在线视频| 国产亚洲精品AA片在线观看不加载 | 亚洲熟妇AV日韩熟妇在线| 亚洲综合色区中文字幕| 亚洲六月丁香婷婷综合| 亚洲性色AV日韩在线观看| 亚洲精品精华液一区二区| 美女18一级毛片免费看| 一级毛片免费不卡直观看| 久久久久久毛片免费看| 久久精品中文字幕免费| 114一级毛片免费| 日本免费福利视频| 亚洲国产婷婷综合在线精品| 亚洲一区二区三区在线观看精品中文 | 麻豆安全免费网址入口| 国产成人精品免费大全| 美女在线视频观看影院免费天天看| 一级毛片**不卡免费播| 可以免费看黄的网站| 国产美女无遮挡免费视频网站| 亚洲精品成人久久久| 亚洲αv在线精品糸列| 亚洲免费一级视频| 欧美色欧美亚洲另类二区| 亚洲一区二区三区免费| 91在线手机精品免费观看| 成人午夜免费福利| 亚洲精品成人久久久| 亚洲人成影院在线| 亚洲精品无码日韩国产不卡av| 日韩成人毛片高清视频免费看| 日韩免费高清播放器|