最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

1、當(dāng)使用自定義的pl/sql記錄時,需要分別定義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表的元素個數(shù)沒有限制,且下表可為負數(shù)。

語法如下:

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

index by binary_integer 子句代表以符號整數(shù)為索引,訪問表類型變量中的數(shù)據(jù)方法就是“表變量名(索引符號整數(shù))”??梢圆话错樞蛸x值,但必須先賦值后使用。

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個成員存在,則返回true
  • COUNT:返回已經(jīng)分配了存儲空間即賦值了的成員數(shù)量
  • FIRST:返回成員的最低下標(biāo)值
  • LAST:返回成員的最高下標(biāo)值
  • PRIOR(n):返回下標(biāo)為n的成員的前一個成員的下標(biāo)。如果沒有則返回NULL
  • NEXT(N):返回下標(biāo)為n的成員的后一個成員的下標(biāo)。如果沒有則返回NULL
  • TRIM:刪除末尾一個成員
  • TRIM(n) :刪除末尾n個成員
  • DELETE:刪除所有成員
  • DELETE(n) :刪除第n個成員
  • DELETE(m, n) :刪除從n到m的成員
  • EXTEND:添加一個null成員
  • EXTEND(n):添加n個null成員
  • EXTEND(n,i):添加n個成員,其值與第i個成員相同
  • 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個成員的值:'||v_reg_table(5));
END;

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

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

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

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

VARRAY的使用舉例:

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

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

   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個成員的值:'||v_reg_varray(5));
--用構(gòu)造函數(shù)語法賦予初值后就可以這樣對成員賦值
   v_reg_varray(5) := '法國';
   DBMS_OUTPUT.PUT_LINE('第5個成員的值:'||v_reg_varray(5));
END;

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

相關(guān)文章

最新評論

广宗县| 梁山县| 凭祥市| 三江| 张家界市| 南投市| 基隆市| 千阳县| 思茅市| 灵宝市| 尤溪县| 辛集市| 高陵县| 尉氏县| 简阳市| 永清县| 吉安县| 柳河县| 金乡县| 银川市| 基隆市| 龙州县| 繁昌县| 高安市| 南丰县| 平凉市| 中西区| 二连浩特市| 汉阴县| 大埔区| 山东省| 浦县| 玉溪市| 神农架林区| 万盛区| 阿巴嘎旗| 鄄城县| 定西市| 盐源县| 鄱阳县| 文山县|