为什么使用table函数时会出现ora-22905错误?
在网上看到一位仁兄写因为table函数中使用的是自定义的table类型,不是shemale级别的table类型,请问什么是schema级别的table类型?

解决方案 »

  1.   

    比如你用store用户创建了一个表table1
    那么你用store用户执行查询就是select * from table1
    如果用sys用户 执行查询就得select * from store.table1
    其中store就是table1的schema
      

  2.   


    DECLARE
    number_table_tmp NUM_ARRAY:=NUM_ARRAY(410673, 414303, 414454, 413977, 414042, 414115, 413972, 414104, 414062);
    BEGIN
    FOR c1 IN (SELECT par_id, 1 acc_vdo_id FROM SIG_VIS_CAM 
    WHERE par_id IN (SELECT * FROM TABLE(number_table_tmp)) 
    UNION ALL
    SELECT par_id, 2 acc_vdo_id FROM SIG_ACCAO a
    WHERE par_id IN (SELECT * FROM TABLE(number_table_tmp))) LOOP
    NULL;
    END LOOP;
    END; error: ORA-22905: cannot access rows from a non-nested table item
    WHERE par_id IN (SELECT * FROM TABLE(number_table_tmp))
    改成
    WHERE par_id IN (SELECT id FROM <your table>)