<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 閱讀(1106) 評論(0)  編輯  收藏 所屬分類: oracle/mysql/sql
    主站蜘蛛池模板: 岛国av无码免费无禁网站| a级毛片毛片免费观看久潮| 日本一区二区三区免费高清| 亚洲国产一区在线| 久久青草91免费观看| 亚洲第一区香蕉_国产a| 久久免费观看国产精品| 亚洲美女视频一区| 亚洲视频在线观看免费视频| 亚洲国产成+人+综合| 国产无人区码卡二卡三卡免费| 伊人久久五月丁香综合中文亚洲 | 欧美好看的免费电影在线观看| 亚洲精品电影在线| 午夜性色一区二区三区免费不卡视频 | 国产美女无遮挡免费网站| 久久人午夜亚洲精品无码区| 亚洲国产精品嫩草影院久久 | 精品熟女少妇a∨免费久久| 亚洲性无码av在线| 免费看美女被靠到爽的视频| 麻豆亚洲AV成人无码久久精品 | h视频免费高清在线观看| 亚洲AV永久无码精品水牛影视| 香港a毛片免费观看| 亚洲欧洲无码一区二区三区| 亚洲?V无码乱码国产精品| 免费国产成人18在线观看| 亚洲另类精品xxxx人妖| 亚洲福利在线播放| 亚洲成人免费在线| 亚洲av日韩aⅴ无码色老头| 亚洲一区爱区精品无码| 91九色视频无限观看免费| 美女视频黄频a免费| 亚洲av综合色区| 暖暖免费高清日本中文| 在线人成免费视频69国产| 学生妹亚洲一区二区| 亚洲日产无码中文字幕| 在线jyzzjyzz免费视频|