<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
    主站蜘蛛池模板: 日本黄色免费观看| 亚洲色欲久久久久综合网| 又大又黄又粗又爽的免费视频| 女bbbbxxxx另类亚洲| 浮力影院亚洲国产第一页| 日韩免费人妻AV无码专区蜜桃| 亚洲一区二区三区深夜天堂| 国产大片51精品免费观看| 日韩电影免费在线观看中文字幕| 久久久久久亚洲精品影院| 国产成人99久久亚洲综合精品| 在线a免费观看最新网站| 四虎精品免费永久免费视频| 亚洲网红精品大秀在线观看| 免费在线精品视频| 日韩免费人妻AV无码专区蜜桃| 曰批全过程免费视频免费看| 亚洲精品亚洲人成在线麻豆| 亚洲高清无码专区视频| 91在线品视觉盛宴免费| 九九精品成人免费国产片| 亚洲AV无码专区在线厂| 亚洲性一级理论片在线观看| 国产91精品一区二区麻豆亚洲 | 日本在线看片免费人成视频1000 | 亚洲av无码片在线观看| 中文字幕人成人乱码亚洲电影| 毛色毛片免费观看| 一级毛片免费观看不卡的| 日本精品久久久久久久久免费| 亚洲中文字幕久久精品无码VA| 久久精品国产亚洲AV香蕉| 亚洲精品久久久www| 免费无码一区二区三区蜜桃大| 97在线视频免费播放| 9i9精品国产免费久久| 国产亚洲情侣久久精品| 亚洲人成电影网站免费| 亚洲人成伊人成综合网久久| 亚洲日本一区二区三区| 亚洲精品中文字幕乱码三区|