PROCEDURE AddTab(p_IDs out t_tabId,p_str in out river.name%TYPE)IS
v_tabname river.name%TYPE;
CURSOR c_Tabnames IS
select table_name from user_tables;
BEGIN
OPEN c_Tabnames;
LOOP
FETCH c_Tabnames into v_tabname;
EXIT WHEN c_Tabnames%NOTFOUND;
p_IDs(p_str):=v_tabname;
END LOOP﹔   --這個地方加上'﹔'號
END AddTab;

解决方案 »

  1.   

    谢谢,对了,但是RECORD类型又怎么赋值呢?
    PROCEDURE AddTab(p_Names out t_tabName,str in out river.name%TYPE,p_nub in out binary_integer)IS
    v_tabname river.name%TYPE;
    CURSOR c_Tabnames IS
    select table_name from user_tables;
    BEGIN
    p_nub:=0;
    OPEN c_Tabnames;
    LOOP
    FETCH c_Tabnames into v_tabname;
    EXIT WHEN c_Tabnames%NOT FOUND;
    p_nub:=p_NumTabs+1;
    p_IDs.nub:=p_nub;(或改为p_IDs(nub):=p_nub)
    p_IDs.Name:=v_tabname;(p_IDs(Name):=v_tabname 仍有错)
    END LOOP;
    END AddTab;
    说Invalid,怎么改呢???
      

  2.   

    PROCEDURE AddTab(p_IDs out t_tabId,p_str in out river.name%TYPE)IS
    v_tabname river.name%TYPE;
    CURSOR c_Tabnames IS
    select table_name from user_tables;
    num number:=1;
    BEGIN
    OPEN c_Tabnames;
    LOOP
    FETCH c_Tabnames into v_tabname;
    EXIT WHEN c_Tabnames%NOTFOUND;
    p_ids.exdent;
    p_IDs(num):=v_tabname;
    num:=num+1;
    END LOOP;   --這個地方加上'﹔'號
    close c_Tabnames;
    END AddTab;
      

  3.   

    谢谢,p_ids.exdent;这句什么用呢?怎么有错,去掉后就Valid了。呵呵上面的过程是放在包B1中的,我写了一个引用
    declare
    v_tab B1.t_tabId;
    v_counter binary_integer:=1;
    v_num binary_integer:=10;
    BEGIN
    B1.AddTab(v_tab,v_num);
    FOR v_counter IN 1..v_num LOOP
    INSERT INTO temp_tab(Name)
    values(v_tab(v_counter));
    END LOOP;
    END;
    但错误总停在第一行,说引用未初始化的收集?什么原因呢
      

  4.   

    PROCEDURE AddTab(p_Names out t_tabName,str in out river.name%TYPE,p_nub in out binary_integer)
    -----------------------------
    p_nub:=p_NumTabs+1;
    p_IDs.nub:=p_nub;(或改为p_IDs(nub):=p_nub)
    p_IDs.Name:=v_tabname;(p_IDs(Name):=v_tabname 仍有错)
    -----------------------------我没有看懂你的p_IDs、p_NumTabs这两个变量咯 :(