plsql-集合-关联数组(下标为数字、字符串)

--*******集合1--关联数组(下标为数字类型)
/*
plsql集合类型有三种:下面是第一种:关联数组
*/
declare
 --定义一个数组类型
 --mytable:自己定义的类型名字
 --varchar2:类型mytable中元素的类型
 --binary_integer:下标索引的数据类型
 type mytable is table of varchar2(1000) index by binary_integer;
 v_mytable mytable;  --用刚创建的类型,定义一个变量
begin
 v_mytable(-1) := '河南省汝州市';
 v_mytable(0)  := '的';
 v_mytable(1)  := 'S'; --设定下标为1的元素为“chen” 注意元素的下标无限制,可以为负数
 v_mytable(2)  := 'U';
 v_mytable(3)  := 'P';
 v_mytable(4)  := 'A';
 v_mytable(5)  := 'N';
 dbms_output.put_line('数组元素的总数是:' ||  v_mytable.count);
 --注意first,last只是取元素的下标值,并不是取元素的值,如下:
 dbms_output.put_line('第一个元素下标是:' ||  v_mytable.first || '--第一个元素是:' || v_mytable(v_mytable.first));
 dbms_output.put_line('最后一个元素下标是:' ||  v_mytable.last || '---最后一个元素是:' || v_mytable(v_mytable.last));
 
 --for循环取数组中的值
 for v_count in v_mytable.first..v_mytable.last  loop
   dbms_output.put_line(v_mytable(v_count));
 end loop;
end;


输出:
数组元素的总数是:7
第一个元素下标是:-1--第一个元素是:河南省汝州市
最后一个元素下标是:5---最后一个元素是:N
河南省汝州市

S
U
P
A
N

PL/SQL 过程已成功完成。


--*******集合2--关联数组(下标为字符串类型)
/*
这种类型相当于java中的map  键-值对
*/
declare 
  type string_table is table of varchar2(30) index by varchar2(30);
  v_mytable string_table;
  v_record emp%rowtype;
  cursor c is select ename,job from emp;
  keyTemp varchar2(30); --集合中存放键的临时变量
begin
  --读取emp表中的前三条记录,存储在集合v_mytable中,最后遍历该集合。
  for c_temp in c  loop
      v_mytable(c_temp.ename) := c_temp.job;
  end loop;
  dbms_output.put_line(v_mytable.count); --集合中元素(键值对)总数
  dbms_output.put_line(v_mytable.first); --集合中第一个元素的键
  dbms_output.put_line(v_mytable.last);  --集合中最后一个元素的键
  
  --//遍历
  keyTemp = v_mytable.first;     --取集合中第一个键值对的键赋给临时变量
  while (keyTemp is not null) loop --如果第一个元素的键不为空进行循环
    dbms_output.put_line('键为: ' || keyTemp || '  值为:' || v_mytable(keyTemp));
    keyTemp := v_mytable.next(keyTemp);
  end loop;
end;
  

输出为:
14
ADAMS
WARD
键为: ADAMS  值为:CLERK
键为: ALLEN  值为:SALESMAN
键为: BLAKE  值为:MANAGER
键为: CLARK  值为:MANAGER
键为: FORD  值为:ANALYST
键为: JAMES  值为:CLERK
键为: JONES  值为:MANAGER
键为: KING  值为:PRESIDENT
键为: MARTIN  值为:SALESMAN
键为: MILLER  值为:CLERK
键为: SCOTT  值为:ANALYST
键为: SMITH  值为:CLERK
键为: TURNER  值为:SALESMAN
键为: WARD  值为:SALESMAN

PL/SQL 过程已成功完成。

你可能感兴趣的:(oracle,plsql集合)