oracle 自定义类型

DECLARE

TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(30); 这个BY VARCHAR2(30)

TYPE string_index_by_number IS TABLE OF dept.loc%TYPE INDEX BY PLS_INTEGER; 这个BY PLS_INTEGER;

v_country_codes NUMBER_INDEX_BY_STRING;

v_countries STRING_INDEX_BY_NUMBER;

BEGIN

v_country_codes('Ukraine') := 380;

v_country_codes('UAE') := 971;

v_country_codes('UK') := 44;

v_country_codes('USA') := 1;

v_countries(380) := 'Ukraine';

v_countries(971) := 'UAE';

v_countries(44) := 'UK';

v_countries(1) := 'USA';

END;
这俩个by 后的类型 是什么关系

by PLS_INTEGER你可以用类似 string_index_by_number(1),也就用数字下标来访问集合中的元素,例子:
declare
TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
num_collection string_index_by_number;
begin
num_collection(1) := '北京';
dbms_output.put_line(num_collection(1)); --输出为北京
end;
BY VARCHAR2(30) 你可以用类似 number_index_by_string ('name'),也就用数字下标来访问集合中的元素.
例子: declare
TYPE number_index_by_string IS TABLE OF NUMBER INDEX BY VARCHAR2(30);
num_collection number_index_by_string;
begin
num_collection('北京') := 1;
dbms_output.put_line(num_collection('北京')); --输出为1
end;
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-02
TYPE xxx IS TABLE OF xxTYPE INDEX BY xxTYPE
定义一个PL/SQL表,相当于一个数组,INDEX BY 应该定义下标类型。
一般,PLS_INTEGER/binary_integer 这样的,下标就是 0,1,2,3...本回答被提问者和网友采纳
相似回答