TYPE ty_str_split IS TABLE OF VARCHAR2(400);  FUNCTION fn_split(p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_split IS
    j         INT := 0;
    i         INT := 1;
    len       INT := 0;
    len1      INT := 0;
    str       VARCHAR2(4000);
    str_split ty_str_split := ty_str_split();
BEGIN
    len  := LENGTH(p_str);
    len1 := LENGTH(p_delimiter);    WHILE j < len LOOP
      j := INSTR(p_str, p_delimiter, i);      IF j = 0 THEN
        j   := len;
        str := SUBSTR(p_str, i);
        str_split.EXTEND;
        str_split(str_split.COUNT) := str;
1.红色的这种写法,是实例化吗?
2.type这种定义类型,相当于定义一个数组吧?
3.蓝色字体的str_split.COUNT,<==count就相当于数组下标吧?

解决方案 »

  1.   

    看来这个函数用的挺广泛啊
    你说的都对。
    oracle没有数组类型,一般用这种自定义的类型来代替数组了。
      

  2.   

    类似于其它高级语言的数组,其实有三种:索引表、嵌套表、可变数组。
    要详细了解,可以看一下这本书:精通Oracle 10g PL/SQL编程(http://download.csdn.net/source/552111)
      

  3.   


    TYPE ty_str_split IS TABLE OF VARCHAR2(400); 
    --定义了一个嵌套表类型,表的元素个数不限制,但是每个元素最大长度400字节
    --具体请找本书参考参考,一两句话,一两个例子解释不清楚,得理解