代码如下:
declare
 type name_array is varray(10000) of bi_bsl.bl_customers_dim_tsing.customer_name_ds%type;
 type city_array is varray(10000) of bi_bsl.bl_customers_dim_tsing.province_name%type;
begin
 select b.customer_name_ds,b.province_name bulk collect into name_array,city_array
 from bi_bsl.bl_customers_dim_tsing b;
 for i in 1.. city_array.count loop
  dbms_output.put_line('客户名:'||name_array(i)||'所在城市'||city_array(i));
 end loop;
end;执行后报错:
ORA-06550:第7行,第62列:
PLS-00321:赋值语句左边的表达式'NAME_ARRAY'不正确
ORA-06550:第8行,第2列:
PL/SQL:ORA-00904::表示符无效
ORA-06550:第7行,第2列:
PL/SQL:SQL Statement ignored
ORA-06550:第9行,第26列:
PLS-00302:必须声明'COUNT'组件
ORA-06550:第9行,第2列:
PL/SQL:Statement ignored请问各位,怎么解决这个问题?

解决方案 »

  1.   


    declare
     type name_array is varray(10000) of bi_bsl.bl_customers_dim_tsing.customer_name_ds%type;
     type city_array is varray(10000) of bi_bsl.bl_customers_dim_tsing.province_name%type;
    --你这上面两个只是定义了两个类型,并没有定义变量
    v_name name_array;
    v_city city_array;
    begin
     select b.customer_name_ds,b.province_name bulk collect into v_name,v_city from bi_bsl.bl_customers_dim_tsing b;
     for i in 1.. v_city.count loop
      dbms_output.put_line('客户名:'||v_name(i)||'所在城市'||v_city(i));
     end loop;
    end;
    --FYI
     declare
      type name_array is varray(10000) of scott.emp.ename%type;
      type sal_array is varray(10000) of scott.emp.sal%type;
      v_name  name_array;
      v_sal   sal_array;
     begin
      select b.ename,b.sal bulk collect into v_name,v_sal
      from scott.emp b;
      for i in 1.. v_sal.count loop
       dbms_output.put_line('客户名:'||v_name(i)||'工资'||v_sal(i));
      end loop;
     end;
    客户名:SMITH工资800
    客户名:ALLEN工资1600
    客户名:WARD工资1250
    客户名:JONES工资2975
    客户名:MARTIN工资1250
    客户名:BLAKE工资2850
    客户名:CLARK工资2450
    客户名:SCOTT工资3000
    客户名:KING工资5000
    客户名:TURNER工资1500
    客户名:ADAMS工资1100
    客户名:JAMES工资950
    客户名:FORD工资3000
    客户名:MILLER工资1300PL/SQL 过程已成功完成。