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

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

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

    隨筆-124  評論-49  文章-56  trackbacks-0
    --1定義標量變量
    --
    (1)定義語法
    變量名 [constant] 數據類型 [not null] [:= | default expr]
    -- constant:用于指定常量。必須指定初始值
    --
     := 用于為變量和常量指定初始值
    --
     expr初始值的pl/sql表達式,可以是文本值、變量、函數等
    --
    示例1:
    v_name varchar2(10);
    v_rate constant 
    number(3,2) := 5.5;
    v_valid boolean 
    not null default false;
    --(2)使用
    --
    變量賦值使用等號前加冒號(:=)
    --
    示例2:
    declare
    v_name 
    varchar2(10);
    v_money 
    number(6,2);
    c_tax_rate constant 
    number(3,2) := -0.03;
    v_tax_money 
    number(6,2);
    begin
     
    select user_name,game_money into v_name,v_money 
     
    from user_info where user_id = 100000;
     v_tax_money :
    = v_money*c_tax_rate;
     dbms_output.put_line(
    'name:'||v_name);
     dbms_output.put_line(
    'money:'||v_money);
     dbms_output.put_line(
    'rate:'||v_tax_money);
    end
    --(3)使用%TYPE屬性
    v_name user_info.user_name%TYPE;
    v_money user_info.game_money
    %TYPE;
    c_tax_rate constant 
    number(3,2) := -0.03;
    v_tax_money v_money
    %TYPE;
    --變量v_name,v_money與user_info表的user_name,game_money列的類型和長度完全一致
    --
    變量v_tax_money與變是v_money的類型和長度完全一致

    --2復合變量
    --
    (1)pl/sql記錄(類似于結構)
    --
     在定義部分定義記錄類型和記錄變量,在執行部分引用該記錄變量
    --
     引用記錄成員時必須要加記錄變量作為前綴(記錄變量。記錄成員)
    --
    示例3:
    declare
    TYPE record_type 
    IS RECORD(
      v_name user_info.
    user_name%TYPE,
      v_money user_info.game_money
    %TYPE
    );
    emp_record record_type;
    begin
     
    select user_name,game_money into emp_record 
     
    from user_info where user_id = 100000;
     dbms_output.put_line(
    'name:'||emp_record.v_name);
     dbms_output.put_line(
    'money:'||emp_record.v_money);
    end
    --(2)pl/sql表(類似于數組)
    --
     pl/sql表與數組區別:下標沒有上下限,個數年沒有限制,下票可以為負值
    --
     必須先在定義部分定義pl/sql表類型和pl/sql表變量,在執行部分引用該pl/sql表變量
    --
    示例4:
    declare
    TYPE name_table_type 
    IS TABLE OF user_info.user_name%TYPE 
      
    INDEX BY BINARY_INTEGER;
    v_name name_table_type;
    begin
     
    select user_name into v_name(-1
     
    from user_info where user_id = 100000;
     dbms_output.put_line(
    'name:'||v_name(-1));
    end
    --(3)嵌套表
    --
    (4)VARRAY(變長數組)

    --3 參照變量
    --
     用于存放數值指針的變量。
    --
    (1)游標變量(REF CURSOR)
    --
     靜態游標:需要在定義游標時指定相應的select語句
    --
     示例5:
    declare
      type c1 
    is ref cursor;--c1為ref cursor類型
      emp_cursor c1;--emp_cursor為游標變量
      v_name user_info.user_name%TYPE;
      v_money user_info.game_money
    %TYPE;
    begin
      
    open emp_cursor for --打開游標變量時指定了對應的select語句
      select user_name,game_money from user_info where  user_id = 100000;
      loop
        
    fetch emp_cursor into v_name,v_money;
        
    exit when emp_cursor%notfound;
        dbms_output.put_line(v_name);
      
    end loop;
    end;
    -- 動態游標:在定義游標變量時不要需指定相應的select語句,而是打開游標時指定select語句
    --
    (2)對象類型變量(REF obj_type)
    --
     是指向對象實例的指針
    --
     示例6:
    create or replace type home_type as object(--建立對象類型
      street varchar2(50),city varchar2(20),
      state 
    varchar2(20),zipcode varchar2(6),
      owner 
    varchar2(10)
    );
    create table homes of home_type;--建表
    insert into homes values('上海路100號','上海','200000','junly');
    commit;
    --對象表homes存放家庭地址及戶主姓名,如每個家庭有四口人,為了同一家庭成員共享家庭地址,
    --
    可使用REF引用home_type對象類型,從而降低占用空間。
    create table person(
      id 
    number(6primary key,
      name 
    varchar2(10),
      addr ref home_type
    );
    insert into person select 1,'junly',ref(p) from homes p where p.owner='junly'
    insert into person select 2,'junl2',ref(p) from homes p where p.owner='junly'
    --person表插入數據時,addr列將存入指向homes表相應數據的地址指針

    --4 LOB變量
    /*用于存儲大批量數據的變量
    (1)內部LOB
     CLOB    支技事務操作   存儲數據庫中   用于存儲大批量字符數據
     BLOB    支技事務操作   存儲數據庫中   用于存儲大批量二進制數據
     NCLOB   支技事務操作   存儲數據庫中   用于存儲大批量字符數據
    (2)外部LOB
     BFILE   不支技事務     存在OS文件中   存儲指向OS文件的指針
    */


    --5非PL/SQL變量
    posted on 2010-07-28 12:01 junly 閱讀(1114) 評論(0)  編輯  收藏 所屬分類: oracle/mysql/sql
    主站蜘蛛池模板: 中文字幕视频在线免费观看| 亚洲午夜无码久久久久软件| a一级毛片免费高清在线| 女人18毛片a级毛片免费| 亚洲人成网站999久久久综合| 永久免费av无码不卡在线观看| 亚洲电影免费观看| 成人浮力影院免费看| 国产.亚洲.欧洲在线| 免费的一级黄色片| 国产特黄特色的大片观看免费视频| 免费看一级做a爰片久久| yellow视频免费在线观看| 亚洲日产无码中文字幕| 无码人妻一区二区三区免费n鬼沢 无码人妻一区二区三区免费看 | 久久亚洲AV无码西西人体| 一个人看的在线免费视频| 亚洲日韩欧洲乱码AV夜夜摸| 久9久9精品免费观看| 亚洲一级毛片免费在线观看| 免费观看美女裸体网站| 牛牛在线精品观看免费正| 亚洲精品中文字幕乱码三区| 3344免费播放观看视频| 亚洲男同gay片| 国产亚洲精品自在线观看| 67pao强力打造国产免费| 亚洲欧洲无码一区二区三区| 亚洲阿v天堂在线2017免费| 免费视频精品一区二区三区| 亚洲乱码无限2021芒果| 国产乱子影视频上线免费观看| 最近更新免费中文字幕大全| 亚洲中文无码av永久| 亚洲国产a级视频| 99视频免费观看| 国产亚洲精彩视频| 亚洲五月激情综合图片区| 热99re久久免费视精品频软件| 一级做a免费视频观看网站| 亚洲一区二区三区夜色|