看了下oracle中的集合,有pl/sql表,嵌套表和varray,不知道他们的主要应用在哪里,各能发挥什么作用.因为之前搞sqlserver,就只有临时表和表变量,望各位高手不吝赐教!

解决方案 »

  1.   

    实现数组功能,如:
    DECLARE
      --声明一个1..20的数组类型,可存number型元素
      TYPE atype IS VARRAY(20) OF NUMBER;
      --声明该数组类型的一个变量
      a atype;
    BEGIN
      a := atype(); --初始化
      FOR i IN 1 .. 10 LOOP
        a.extend; --扩展数组
        a(i) := i; --使用数组元素
      END LOOP;
    END;
    /更多可参考:
    http://jb51.net/article/19496.htm
      

  2.   

    推荐一本电子书,上面讲解得较详细
    《精通Oracle.10g.Pl.SQL编程》
    http://222.177.79.137:10002/200811/jtOracle%2010g%20PL%20SQLbc.rar
      

  3.   

    谢谢楼上的回贴!为什么oracle引入三种集合,可能我没理解,觉得有一种pl/sql表就差不多了。这三种集合在oracle开发中各有什么不同于其他集合的作用,谢谢
      

  4.   

    1、pl/sql表:是pl/sql代码中的“表”,只存在应用运行期间(内存里),类似“数组”,稀疏的,大小可以动态增长,可以有负下标,但不能存储在数据库表中。2、嵌套表:可以在表列中存储,稀疏的,可以删除单独记录,不能有负下标,大小可变。3、varray:与pl/sql区别是可以在表列中存储,是密集的,不能删除单独记录,不能有负下标,固定大小的集合。
      

  5.   

    3、varray
    和以前的语言兼容,发展历程相关,
      

  6.   

     pl/sql表只是pl/sql中定义的一种结构,并不是真实可访问的表,  varry和嵌套表:
      如果集合的物理尺寸是静态的,且要在表中使用集合,那就使用varray。varray最接近如Java、C、C++或C#等编程语言中的数组。
      如果由于运行时的可变性,物理尺寸未知,且要在表中使用集合,那就使用嵌套表。嵌套表类似于编程语言中的列表和bag.
      

  7.   

     
    pl/sql表即联合数组
    如果集合的物理尺寸是静态的,且要在表中使用集合,那就使用varray。varray最接近如Java、C、C++或C#等编程语言中的数组。
      如果由于运行时的可变性,物理尺寸未知,且要在表中使用集合,那就使用嵌套表。嵌套表类似于编程语言中的列表和bag.
    如果由于运行时的可变性,物理尺寸未知,但不在表中使用集合,那就使用pl/sql。pl/sql适用于标准的编程解决方案,如使用图(map)和集(set)