国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
[Oracle] PL/SQL集合增強
Oracle] PL/SQL集合增強
[Oracle] PL/SQL集合增強
Builder.com
29/12/2004
URL: http://www.zdnet.com.cn/developer/database/story/0,3800066906,39265363,00.htm

Oracle Release 2 非常有力地增強了PL/SQL 集合功能,它可以對以前的發(fā)布版本進行代碼維護。例如,可以在Release 2 中將PL/SQL 集合用作一個單一的參數(shù),從而避免了使用一長串單個的字段作為參數(shù)。

另外一個優(yōu)點是記錄的集合現(xiàn)在可以是BULK COLLECTION INTO 子句的目標。而在Release 2 以前,我們必須為返回的每個列創(chuàng)建一個集合。例如:

Declare
    type deptno_coll is table of dept.deptno%type;
    type dname_coll is table of dept.dname%type;
    type loc_coll is table of dept.loc%type;
    deptno_list deptno_coll;
    dname_list dname_coll;
    loc_list loc_coll;
begin
    select * bulk collect into deptno_list,dname_list,loc_list from dept;
end;

在Release 2中變成了:

Declare
    type dept_coll is table of dept%rowtype;
    dept_list dept_coll;
begin
    select * bulk collect into dept_list from dept;
end;

 

注意這里不再是對字段名的引用。如果DEPT 表的字段個數(shù)或者名稱被修改,也不需要對第二段示例代碼進行改動。這段代碼還比舊版本易于維護。然而,應用程序需要一個Release 2 數(shù)據(jù)庫來編譯。

現(xiàn)在可以使用記錄以集合方式將一行數(shù)據(jù)插入到一個表中。在Release 2 之前,必須插入到表中一個PL/SQL 記錄然后再單獨地確定每一個字段,作法如下:

Declare
    dept_row dept%rowtype;
begin
    /* populate dept_row . . . */
    insert into dept values (dept_row.deptno,dept_row.dname,dept_row.loc);
end;

而在Release 2中可以將插入語句簡化為:

    insert into dept values dept_row;

記錄可以以集合方式更新一個表中的數(shù)據(jù)。像插入語句一樣,以前必須單獨地更新每一個字段:

    update dept
       set deptno = dept_row.deptno,
            dname = dept_row.dname,
              loc = dept_row.loc
     where deptno = dept_row.deptno;

而在Release 2中,則可以根據(jù)在記錄中的位置來更新整條數(shù)據(jù):

    update dept set row = dept_row where deptno = dept_row.deptno;

(注意“SET ROW”是一個新子句。)

可以使用記錄從DML 語句的RETURNING 子句中檢索信息。通常在更新數(shù)據(jù)時保持一個本地副本以備以后的PL/SQL 操作會比較有用。在Release 2 以前,我們可以在計算和調(diào)用完成之后使用RETURNING 子句將數(shù)據(jù)存儲到某個地方。而在Release 2 中,就可以把數(shù)據(jù)存儲到一條記錄中。例如,下面是Release 2 之前的作法:

Declare
    foorow footab%rowtype;
begin
    insert into footab (foono,fooname) values (fooseq.nextval,‘Foo‘)
      returning foono,fooname into foorow.foono,foorow.fooname;
end;

而現(xiàn)在可以把插入語句簡化為:

    insert into footab (foono,fooname) values (fooseq.nextval,‘Foo‘)
        returning foono,fooname into foorow;

這些增強使得語法更加易讀,并能幫助我們避免由于在返回語句中將表匹配錯誤所引起的程序錯誤。但是要記住這些增強要依賴于表和記錄中第一個字段的物理位置。如果一個表的字段位置發(fā)生變化,那么字段的順序也會變化。因此,在一個數(shù)據(jù)庫表中使用ROWTYPE 匹配字段比顯式地列出字段名要好。


本文作者:Scott Stephens已經(jīng)在Oracle工作了13年有余,他曾經(jīng)在技術(shù)支持、電子商務、市場和軟件開發(fā)等部門工作。更多Scott Stephens 的 Oracle 技巧,請訪問我們的Oracle Dev Tips Library.


責任編輯:李寧

posted on 2005-02-01 20:18 笨笨 閱讀(4130) 評論(0)  編輯 收藏 引用 收藏至365Key 所屬分類: Oracle 、Others

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Oracle 外部表
Oracle筆記 六、PL/SQL簡單語句塊、變量定義
zhouweifeng | ORACLE動態(tài)調(diào)用存儲過程
Oracle PL/SQL開發(fā)基礎(chǔ)(第二十五彈:操縱游標數(shù)據(jù))
CTL文件用法
oracle的子查詢
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服