欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Oracle中PL/SQL復(fù)合數(shù)據(jù)類型

 更新時(shí)間:2022年05月05日 15:12:03   作者:springsnow  
這篇文章介紹了Oracle中PL/SQL的復(fù)合數(shù)據(jù)類型,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、PL/SQL記錄:一條記錄

可簡(jiǎn)化單行多列的數(shù)據(jù)的處理。當(dāng)使用pl/sql記錄時(shí),應(yīng)用開發(fā)人員即可以自定義記錄類型和記錄變量,也可以使用%rowtype屬性直接定義記錄變量。

1、當(dāng)使用自定義的pl/sql記錄時(shí),需要分別定義pl/sql記錄類型和記錄變量。

declare 
type emp_record_type is record(
      name emp.ename%type,salary emp.sal%type
      );
            emp_record emp_record_type;
begin
select ename,sal into emp_record from emp where empno=&no;
dbms_output.put_line('雇員名:'||emp_record.name);
dbms_output.put_line('雇員工資:'||emp_record.salary);
end;

2、使用%rowtype 屬性定義記錄變量

declare 
emp_record emp%rowtype;
begin 
select * into emp_record from emp where empno=&no;
dbms_output.put_line('姓名: '||emp_record.ename);
dbms_output.put_line('工資: '||emp_record.sal);
end;

二、PL/SQL表:一列數(shù)據(jù)

用于處理單列多行數(shù)據(jù)。類似于一維數(shù)組。PL/SQL表的元素個(gè)數(shù)沒有限制,且下表可為負(fù)數(shù)。

語法如下:

type 表類型  is table of  類型 
 index by binary_integer; 
表變量名  表類型;

index by binary_integer 子句代表以符號(hào)整數(shù)為索引,訪問表類型變量中的數(shù)據(jù)方法就是“表變量名(索引符號(hào)整數(shù))”。可以不按順序賦值,但必須先賦值后使用。

1、使用PL/SQL表處理單列單行數(shù)據(jù)

declare 
type ename_table_type is table of emp.ename%type
index by binary_integer;
ename_table ename_table_type;
begin
select ename into ename_table(1) from emp where empno=&eno;
dbms_output.put_line('雇員名: '||ename_table(1));
end;

2、使用PL/SQL表處理單列多行數(shù)據(jù)

declare
type ename_table_type is table of emp.ename%type
index by binary_integer;
ename_table ename_table_type;
begin 
select ename bulk collect into ename_table from emp
where deptno=&dno;
for i in 1..ename_table.count loop
dbms_output.put_line('雇員名: '||ename_table(i));
end loop;
end;

三、PL/SQL記錄表:多列多行表

用于處理多行多列數(shù)據(jù)。類似于多維數(shù)組。

定義記錄表類型的語法如下:

TYPE table_name IS TABLE OF element_type [NOT NULL] 
INDEX BY [BINARY_INTEGER | PLS_INTEGER | VARRAY2];

記錄表中的方法:

  • EXISTS(n):如果集合的第n個(gè)成員存在,則返回true
  • COUNT:返回已經(jīng)分配了存儲(chǔ)空間即賦值了的成員數(shù)量
  • FIRST:返回成員的最低下標(biāo)值
  • LAST:返回成員的最高下標(biāo)值
  • PRIOR(n):返回下標(biāo)為n的成員的前一個(gè)成員的下標(biāo)。如果沒有則返回NULL
  • NEXT(N):返回下標(biāo)為n的成員的后一個(gè)成員的下標(biāo)。如果沒有則返回NULL
  • TRIM:刪除末尾一個(gè)成員
  • TRIM(n) :刪除末尾n個(gè)成員
  • DELETE:刪除所有成員
  • DELETE(n) :刪除第n個(gè)成員
  • DELETE(m, n) :刪除從n到m的成員
  • EXTEND:添加一個(gè)null成員
  • EXTEND(n):添加n個(gè)null成員
  • EXTEND(n,i):添加n個(gè)成員,其值與第i個(gè)成員相同
  • LIMIT:返回在varray類型變量中出現(xiàn)的最高下標(biāo)值

例1:

declare 
type emp_table_type is table of emp%rowtype
index by binary_integer;
emp_table emp_table_type;
begin
select * bulk collect into emp_table from emp where deptno=&dno;
for i in 1..emp_table.count loop
dbms_output.put_line('雇員名: '||emp_table(i).ename||',工資: '||emp_table(i).sal);
end loop;
end;

按一維數(shù)組使用表:

DECLARE
--定義記錄表數(shù)據(jù)類型
   TYPE reg_table_type IS TABLE OF varchar2(25)
   INDEX BY BINARY_INTEGER;
--聲明記錄表數(shù)據(jù)類型的變量
   v_reg_table REG_TABLE_TYPE;
    
BEGIN
   v_reg_table(1) := 'Europe';
   v_reg_table(2) := 'Americas';
   v_reg_table(3) := 'Asia';
   v_reg_table(4) := 'Middle East and Africa';
   v_reg_table(5) := 'NULL';
 
   DBMS_OUTPUT.PUT_LINE('地區(qū)名稱:'||v_reg_table (1)||'、'       ||v_reg_table (2)||'、'      ||v_reg_table (3)||'、'      ||v_reg_table (4));
   DBMS_OUTPUT.PUT_LINE('第5個(gè)成員的值:'||v_reg_table(5));
END;

四、varry數(shù)據(jù)類型:數(shù)組

具有相同數(shù)據(jù)類型的一組成員的集合,每個(gè)成員都有一個(gè)唯一的下標(biāo)。

定義VARRAY數(shù)據(jù)類型的語法如下:

TYPE VARRAY_NAME IS VARRAY(SIZE) OF ELEMENT_TYPE [NOT NULL];

VARRAY的使用舉例:

DECLARE
--定義一個(gè)最多保存5個(gè)VARCHAR(25)數(shù)據(jù)類型成員的VARRAY數(shù)據(jù)類型
   TYPE reg_varray_type IS VARRAY(5) OF VARCHAR(25);
--聲明一個(gè)該VARRAY數(shù)據(jù)類型的變量
   v_reg_varray REG_VARRAY_TYPE;

BEGIN
--用構(gòu)造函數(shù)語法賦予初值
   v_reg_varray := reg_varray_type
         ('中國(guó)', '美國(guó)', '英國(guó)', '日本', '法國(guó)');

   DBMS_OUTPUT.PUT_LINE('地區(qū)名稱:'||v_reg_varray(1)||'、'
                                    ||v_reg_varray(2)||'、'
                                    ||v_reg_varray(3)||'、'
                                    ||v_reg_varray(4));
   DBMS_OUTPUT.PUT_LINE('賦予初值NULL的第5個(gè)成員的值:'||v_reg_varray(5));
--用構(gòu)造函數(shù)語法賦予初值后就可以這樣對(duì)成員賦值
   v_reg_varray(5) := '法國(guó)';
   DBMS_OUTPUT.PUT_LINE('第5個(gè)成員的值:'||v_reg_varray(5));
END;

到此這篇關(guān)于Oracle中PL/SQL復(fù)合數(shù)據(jù)類型的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 全新感受Oracle 9i

    全新感受Oracle 9i

    全新感受Oracle 9i...
    2007-03-03
  • Oracle 解決ORA-00257 Archiver error 報(bào)錯(cuò)問題解決

    Oracle 解決ORA-00257 Archiver error 報(bào)錯(cuò)問題解決

    訂單投資交易環(huán)境進(jìn)行 impdb 數(shù)據(jù)泵恢復(fù)數(shù)據(jù),執(zhí)行到一半,報(bào)錯(cuò)終止,歸檔策略保留時(shí)間較長(zhǎng),或歸檔頻率過高,導(dǎo)致數(shù)據(jù)庫掛載盤符空間不足,本文給大家分享Oracle 解決ORA-00257 Archiver error 報(bào)錯(cuò)問題解決,感興趣的朋友一起看看吧
    2023-12-12
  • 詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法

    詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法

    這篇文章主要介紹了詳解Oracle 中實(shí)現(xiàn)數(shù)據(jù)透視表的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • oracle聯(lián)機(jī)數(shù)據(jù)庫備份詳解

    oracle聯(lián)機(jī)數(shù)據(jù)庫備份詳解

    oracle數(shù)據(jù)庫維護(hù)中,備份或恢復(fù)是重中之重的問題,本文就講一下oracle聯(lián)機(jī)數(shù)據(jù)庫備份的方法
    2013-11-11
  • Oracle Number型的深入理解

    Oracle Number型的深入理解

    本篇文章是對(duì)Oracle中Number型進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Oracle表字段的增刪改、表的重命名及主鍵的增刪改

    Oracle表字段的增刪改、表的重命名及主鍵的增刪改

    本文主要介紹了Oracle表字段的增、刪、改;表的重命名;主鍵的增刪改查。具有一定的參考價(jià)值,下面跟著小編一起來看下吧
    2017-01-01
  • Oracle中觸發(fā)器示例詳解

    Oracle中觸發(fā)器示例詳解

    觸發(fā)器是許多關(guān)系數(shù)據(jù)庫系統(tǒng)都提供的一項(xiàng)技術(shù)。下面這篇文章主要給大家介紹了關(guān)于Oracle中觸發(fā)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • ORACLE應(yīng)用經(jīng)驗(yàn)(2)

    ORACLE應(yīng)用經(jīng)驗(yàn)(2)

    ORACLE應(yīng)用經(jīng)驗(yàn)(2)...
    2007-03-03
  • Oracle中執(zhí)行動(dòng)態(tài)SQL

    Oracle中執(zhí)行動(dòng)態(tài)SQL

    這篇文章介紹了Oracle中執(zhí)行動(dòng)態(tài)SQL的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 基于OGG實(shí)現(xiàn)Oracle實(shí)時(shí)同步MySQL的全過程

    基于OGG實(shí)現(xiàn)Oracle實(shí)時(shí)同步MySQL的全過程

    這篇文章詳細(xì)闡述了基于OGG實(shí)現(xiàn)Oracle實(shí)時(shí)同步MySQL全過程,文中通過圖文結(jié)合和代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-11-11

最新評(píng)論