TYPE col_type AS OBJECT (col_name VARCHAR2(50));TYPE col_sub_typeIS table OFcol_type;FUNCTION get_col_tab RETURN col_sub_type;
最后,get_col_tab函数:
FUNCTION get_col_tab RETURN col_sub_type ASl_type col_sub_type := col_sub_type();BEGINFOR i IN (SELECT disTINCT table_name t_name FROM ALL_TAB_ColUMNS WHERE table_name = 'table_1') LOOPl_type.extend;l_type(l_type.last) := col_type(i.t_name);END LOOP;RETURN l_type;END;
但是在编译包规范时,我收到以下错误:
PLS-00540: Object not supported in this context
据我所知,我不能在包规范中使用类型OBJECT.是否有解决方法或其他方法来执行此 *** 作?
提前致谢.
解决方法 在PL / sql中,您必须使用记录而不是对象.TYPE col_type IS RECORD (col_name VARCHAR2(50));TYPE col_sub_typeIS table OFcol_type;FUNCTION get_col_tab RETURN col_sub_type;
虽然存在一些功能差异,但如果您只是想创建一组列定义,它们实际上是相同的.
其中一个区别是记录类型不支持构造函数(隐式或显式).这意味着您需要单独分配每个字段:
l_type(l_type.last).col_name := i.t_name;
另一种方法是使用批量收集:
SELECT disTINCT table_name t_nameBulK ColLECT INTO l_typeFROM all_tab_columnsWHERE table_name = 'table_1';总结
以上是内存溢出为你收集整理的oracle – PLS-00540:在尝试编译包规范时,此上下文中不支持该对象全部内容,希望文章能够帮你解决oracle – PLS-00540:在尝试编译包规范时,此上下文中不支持该对象所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)