您现在的位置是:首页
>
字符数组的长度 ABOUT : 字符数组
ABOUT : 字符数组 很长一段时间内 PL/SQL开发人员必须有一个 i dex y表 才能创建某个指定数据类型的或者PL/SQL记录的表 因为他们只接受整型数据以从数组中提取数据 所

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 很赞哦! (1043)
- 上一篇
梓阳学校初一新生名单 我是一个初一新生最近一次期中考试,我没有考好,平时在班里成绩都是名列前茅,这次失误了。
我是一个初一新生最近一次期中考试,我没有考好,平时在班里成绩都是名列前茅,这次失误了。 我是一个初一新生最近一次期中考试,我没有考好,平时在班里成绩都是名列前茅,这次失误了。天下没有常胜将军,不要太在
- 下一篇
我变得更加努力和勤奋用英语说 我每天那么勤奋努力。可是还不如一个天天玩的考的好。老师说我方法有问题。我理解能力差。我天天晚上背书!
我每天那么勤奋努力。可是还不如一个天天玩的考的好。老师说我方法有问题。我理解能力差。我天天晚上背书 我每天那么勤奋努力。可是还不如一个天天玩的考的好。老师说我方法有问题。我理解能力差。我天天晚上背书戒