国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle PL/SQL集合增強

2024-08-29 13:49:42
字體:
來源:轉載
供稿:網友
Oracle Release 2 非常有力地增強了PL/SQL 集合功能,它可以對以前的發(fā)布版本進行代碼維護。例如,可以在Release 2 中將PL/SQL 集合用作一個單一的參數,從而避免了使用一長串單個的字段作為參數。另外一個優(yōu)點是記錄的集合現在可以是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 表的字段個數或者名稱被修改,也不需要對第二段示例代碼進行改動。這段代碼還比舊版本易于維護。然而,應用程序需要一個Release 2 數據庫來編譯。現在可以使用記錄以集合方式將一行數據插入到一個表中。在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; 記錄可以以集合方式更新一個表中的數據。像插入語句一樣,以前必須單獨地更新每一個字段:    update dept
       set deptno = dept_row.deptno,
            dname = dept_row.dname,
              loc = dept_row.loc
     where deptno = dept_row.deptno; 而在Release 2中,則可以根據在記錄中的位置來更新整條數據:    update dept set row = dept_row where deptno = dept_row.deptno; (注重“SET ROW”是一個新子句。)可以使用記錄從DML 語句的RETURNING 子句中檢索信息。通常在更新數據時保持一個本地副本以備以后的PL/SQL 操作會比較有用。在Release 2 以前,我們可以在計算和調用完成之后使用RETURNING 子句將數據存儲到某個地方。而在Release 2 中,就可以把數據存儲到一條記錄中。例如,下面是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; 而現在可以把插入語句簡化為:    insert into footab (foono,fooname) values (fooseq.nextval,'Foo')
        returning foono,fooname into foorow; 這些增強使得語法更加易讀,并能幫助我們避免由于在返回語句中將表匹配錯誤所引起的程序錯誤。但是要記住這些增強要依靠于表和記錄中第一個字段的物理位置。假如一個表的字段位置發(fā)生變化,那么字段的順序也會變化。因此,在一個數據庫表中使用ROWTYPE 匹配字段比顯式地列出字段名要好。


上一篇:我的oracle筆記七(其他)

下一篇:Oracle中求出本星期第一天和第七天的日期

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 丹棱县| 开江县| 阿尔山市| 抚顺县| 宁强县| 剑川县| 丰城市| 盘锦市| 天门市| 沁源县| 安溪县| 通化县| 张北县| 甘孜| 宜兰市| 元朗区| 昭苏县| 天峨县| 延津县| 玉田县| 盖州市| 剑川县| 稷山县| 迭部县| 庆安县| 南靖县| 临安市| 大田县| 南皮县| 翁牛特旗| 兴宁市| 桂平市| 峨边| 红安县| 崇义县| 阿拉尔市| 阳泉市| 射阳县| 浠水县| 虞城县| 洞头县|