oracle – 获取PL / SQL集合中的元素索引
发布时间:2020-12-12 15:11:21 所属栏目:百科 来源:网络整理
导读:是否有内置函数来确定PL / SQL集合中元素的(第一个)索引? 就像是 DECLARE TYPE t_test IS TABLE OF VARCHAR2(1); v_test t_test;BEGIN v_test := NEW t_test('A','B','A'); dbms_output.put_line( 'A: ' || get_index( v_test,'A' ) ); dbms_output.put_lin
是否有内置函数来确定PL / SQL集合中元素的(第一个)索引?
就像是 DECLARE TYPE t_test IS TABLE OF VARCHAR2(1); v_test t_test; BEGIN v_test := NEW t_test('A','B','A'); dbms_output.put_line( 'A: ' || get_index( v_test,'A' ) ); dbms_output.put_line( 'B: ' || get_index( v_test,'B' ) ); dbms_output.put_line( 'C: ' || get_index( v_test,'C' ) ); END; A: 1 B: 2 C: 无论什么必要,我都可以使用关联数组,嵌套表或变量.如果同一元素存在多次,则第一次出现的索引就足够了. 否则我必须做类似的事情 CREATE FUNCTION get_index ( in_test IN t_test,in_value IN VARCHAR2 ) RETURN PLS_INTEGER AS i PLS_INTEGER; BEGIN i := in_test.FIRST; WHILE( i IS NOT NULL ) LOOP IF( in_test(i) = in_value ) THEN RETURN i; END IF; i := in_test.NEXT(i); END LOOP; RETURN NULL; END get_index;不确定,如果这真的有帮助,或者你认为它更优雅: create type t_test as table of varchar2(1); / DECLARE --TYPE t_test IS TABLE OF VARCHAR2(1); v_test t_test; function get_index(q in t_test,c in varchar2) return number is ind number; begin select min(rn) into ind from ( select column_value cv,rownum rn from table(q) ) where cv = c; return ind; end get_index; BEGIN v_test := NEW t_test('A','A'); dbms_output.put_line( 'A: ' || get_index( v_test,'C' ) ); END; / show errors drop type t_test; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- xml – 如何在postgres 9.2版中转义“>”字符
- ruby-on-rails – Rails 3:调用操作但不离开/刷新当前页面
- 如何操作c 11中的日期/日期时间?
- reactjs – 使用React-file-viewer
- Swift3.0 /Swift2.3——dispatch_group的使用
- 合 JSONP 和 jQuery 快速构建强大的 mashup
- c# – 在MongoDB中保存POCO时忽略属性,但在序列化为JSON时不
- 原生、无依赖的web弹层组件——HLayer.js
- [Vue CLI 3] @vue/cli-plugin-eslint 源码分析
- SequoiaDB数据分区