您现在的位置是:首页 >

字符数组的长度 ABOUT : 字符数组

火烧 2021-09-01 13:02:35 1043
ABOUT : 字符数组   很长一段时间内 PL/SQL开发人员必须有一个 i dex y表 才能创建某个指定数据类型的或者PL/SQL记录的表     因为他们只接受整型数据以从数组中提取数据 所
字符数组的长度 ABOUT : 字符数组

ABOUT : 字符数组  

  很长一段时间内 PL/SQL开发人员必须有一个 index by表 才能创建某个指定数据类型的或者PL/SQL记录的表     因为他们只接受整型数据以从数组中提取数据 所以类型声明的末尾子句以 INDEX BY BINARY_INTEGER 结束     如果想以非整型值作为索引 要么你必须创建一个存储过程来扫描需要的值 要么你必须在一个单独的表上建立一个索引     declare  type valrec is record(key varchar ( ) val varchar ( ));  type valtbl is table of valrec index by binary_integer;  mytbl valtbl;  begin  mytbl( ) key := foo ;  mytbl( ) val := bar ;  for i in unt loop  if mytbl(i) key = foo then  dbms_output put_line(mytbl(i) val);  end if;  end loop;  end;    PL/SQL允许使用index by表创建某个指定数据类型或者PL/SQL记录的表     然而 如果想以非整型值作为索引 要么你必须创建一个存储过程扫描你需要的值 要么你必须在一个单独的表上建立一个索引     Oracle i扩展了index by表的语法 允许字符串类型的索引 叫做关联数组     有了字符串类型 你现在就可以快速访问元素 而不用再在每个元素间循环或者去知道它在数组中的位置     declare  type valtbl is table of varchar ( ) index by varchar ( );  mytbl valtbl;  begin  mytbl( zhao ) := apple ;  mytbl( zhao ):= orange ;  dbms_output put_line(mytbl( zhao ));  dbms_output put_line(mytbl( zhao ));  end;    使用字符串索引的关联数组的一个有趣的特性是它们自动地通过当前的国际语言支持(NLS)设置排序     FIRST和LAST函数返回数组中以字典序排列的第一个和最后一个健值 NEXT和PRIOR允许你以字典序获取下一个和前一个键     declare  type valtbl is table of varchar ( ) index by varchar ( );  mytbl valtbl;  key varchar ( );  begin  mytbl( b ) := o ;  mytbl( a ) := one ;  mytbl( c ) := three ;  key := mytbl first;  while key is not null loop  dbms_output put_line(mytbl(key));  key := mytbl next(key);  end loop;  end;    因为Oracle可以自动地将任何的数据类型转换为字符串类型 所以能以字符串作为索引意味着可以以任何数据类型作为索引     你可以使用这个方法把日期 浮点值 行二进制值和对象引用作为索引     declare  type timetbl is table of integer index by varchar ( );  mytbl timetbl;  key varchar ( );  begin  for row in (select * from emp) loop  key := to_char(row hiredate YYYYMMDD );  if not mytbl exists(key) then  mytbl(key) := ;  end if;  mytbl(key) := mytbl(key) + ;  end loop;  dbms_output put_line( hiring barchart: );  dbms_output put_line( );  key := mytbl first;  while key is not null loop  dbms_output put_line(  to_char(to_date(key YYYYMMDD ) DD MON YYYY )  || : ||rpad( # mytbl(key) # ));  key := mytbl next(key);  end loop;  end;    键值必须是唯一的并且是大小写敏感的 在运行时改变NLS值可能会产生运行时错误     对于关联数组的每一个操作NLS设置必须保持相同     关联数组必须在PL/SQL代码中手工建立     其它的程序开发语言和接口不能把主机数组绑定到并联数组 所以你就不能用字符串索引的关联数组使用BULK COLLECT lishixinzhi/Article/program/Oracle/201311/18282  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码