acct_item_type_id(1):=20000;
出现错误。

解决方案 »

  1.   

    那肯定你没有初始化。type varray_name is varray(20) of varchar(10);v_varray varray_name:=varray_name('11','22','33'....);--不能超过十个元素
      

  2.   

    select * from tablename where username=varray_name(jici);
    此句错误。
    jici是一个下标变量。
    原因是ORACLE把varray_name(jici)当成了函数,怎么解决。
      

  3.   

    它是一个变量对象,相当于acct_item_type_id
      

  4.   

    select * from tablename where username=varray_name(jici);
    此句错误。
    jici是一个下标变量。
    原因是ORACLE把varray_name(jici)当成了函数,怎么解决。
      

  5.   

    varray_name(jici)出错在这,里面根本没值吧!
      

  6.   

    它提示没有这个函数,所以它是把varray_name(jici)当成函数了.
      

  7.   

    例子:
    SET serveroutput on
    DECLARE
      -- Define a VARRAY type.
      TYPE t_Numbers IS VARRAY(20) OF NUMBER(3);  -- Declare a NULL varray.
      v_NullList t_Numbers;  -- This varray has 2 elements.
      v_List1 t_Numbers := t_Numbers(1, 2);  -- This varray has one element, which itself is NULL.
      v_List2 t_Numbers := t_Numbers(NULL);
    BEGIN
      IF v_NullList IS NULL THEN
        DBMS_OUTPUT.PUT_LINE('v_NullList is NULL');
      END IF;  IF v_List2(1) IS NULL THEN
        DBMS_OUTPUT.PUT_LINE('v_List2(1) is NULL');
      END IF;
    END;
    /
      

  8.   

    谢谢楼上的回答,原来TYPE t_Numbers IS VARRAY(20) OF NUMBER(3);只是一个类型定义。
      

  9.   

    Number型数组declare
      stmt varchar2(200);
      dept_no_array dbms_sql.Number_Table;
      c number;
      dummy number;
    begin
      dept_no_array(1) := 10; dept_no_array(2) := 20;
      dept_no_array(3) := 30; dept_no_array(4) := 40;
      dept_no_array(5) := 30; dept_no_array(6) := 40;
      stmt := 'delete from emp where deptno = :dept_array';
      c := dbms_sql.open_cursor;
      dbms_sql.parse(c, stmt, dbms_sql.native);
      dbms_sql.bind_array(c, ':dept_array', dept_no_array, 1, 4);
      dummy := dbms_sql.execute(c);
      dbms_sql.close_cursor(c);   exception when others then
        if dbms_sql.is_open(c) then
          dbms_sql.close_cursor(c);
        end if;
        raise;
    end;