TYPE定义有效
BulK ColLECT INTO有效
SELECT不起作用
PROCEDURE MYPROC((ParaMS))AS TYPE REC_TYPE IS RECORD ( ColUMN_1 (tableA.ColUMN_A)%TYPE,ColUMN_2 (tableA.ColUMN_B)%TYPE ); TYPE TAB_TYPE IS table OF REC_TYPE; table_1 TAB_TYPE;BEGIN SELECT ColUMN_A,ColUMN_B BulK ColLECT INTO table_1 FROM table_A; SELECT * FROM table_1;END MYPROC;
产量:
Error(#,#): PL/sql: ORA-00942: table or vIEw does not exist
我也尝试将它包装在一个表函数中,就像我在其他地方使用我的单列类型一样,但这也不起作用
SELECT * FROM table(table_1);
解决方法 您的问题实际上是PLS-00642错误,而不是ORA-22905.实质上,您不能在SQL语句中使用本地集合类型.因此,解决方案是在架构级别定义类型.以这种方式定义类型时,我们不能使用%TYPE语法,而是必须明确定义列( Getting PLS-00201 error while creating a type in oracle),即Error(#,#): PL/sql: ORA-22905: cannot access rows from a non-nested
table item
create or replace type rec_type as object ( ColUMN_1 integer,ColUMN_2 varchar2(128));create or replace type tab_type as table of rec_type;
然后,您需要将值显式转换为相关类型,以便执行批量收集,如下所述:ORA-00947 Not enough values while declaring type globally.
因此,您的程序将如下所示:
PROCEDURE MYPROC((ParaMS))AS table_1 TAB_TYPE; lCount integer;BEGIN SELECT REC_TYPE(ColUMN_A,ColUMN_B) BulK ColLECT INTO table_1 FROM table_A; SELECT COUNT(*) INTO lCount FROM table(table_1);END MYPROC;总结
以上是内存溢出为你收集整理的oracle – 如何从批量收集的记录类型表中选择全部内容,希望文章能够帮你解决oracle – 如何从批量收集的记录类型表中选择所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)