日期:2014-05-17  浏览次数:20995 次

参数含有数组的procedure?
CREATE OR REPLACE PROCEDURE test_proc (out 数组参数) 这个procedure该如何定义?

------解决方案--------------------
http://topic.csdn.net/t/20060112/17/4513467.html 
集合:是具有相同定义的元素的聚合。Oracle有两种类型的集合:
可变长数组(VARRAY):可以有任意数量的元素,但必须预先定义限制值。
嵌套表:视为表中之表,可以有任意数量的元素,不需要预先定义限制值。

在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。
emp_type 就好象一个table 中的一条record 一样,里面有id, name,gender等。emp_type_array 象个table, 里面含有一条条这样的record (emp_type),就象多维数组一样。
--单维数组
 
SQL code
DECLARE   
  TYPE   emp_ssn_array   IS   TABLE   OF   NUMBER   
  INDEX   BY   BINARY_INTEGER;      
  best_employees   emp_ssn_array;   
  worst_employees   emp_ssn_array;   
    
  BEGIN   
  best_employees(1)   :=   '123456';   
  best_employees(2)   :=   '888888';   
    
  worst_employees(1)   :=   '222222';   
  worst_employees(2)   :=   '666666';   
    
  FOR   i   IN   1..best_employees.count   LOOP   
  DBMS_OUTPUT.PUT_LINE('i='||   i   ||   ',   best_employees=   '   ||best_employees(i)   
  ||   ',   worst_employees=   '   ||worst_employees(i));   
  END   LOOP;   
    
  END;