oracle – PLS-00540:在实行编译包类型时,此上下文中不支持该对
发布时间:2021-03-14 23:57:52 所属栏目:站长百科 来源:网络整理
导读:我正在实行编译包类型.我想包括一些范例界说并声明一个函数: 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
我正在实行编译包类型.我想包括一些范例界说并声明一个函数: TYPE col_type AS OBJECT ( col_name VARCHAR2(50) ); TYPE col_sub_type IS TABLE OF col_type; FUNCTION get_col_tab RETURN col_sub_type; 最后,get_col_tab函数: FUNCTION get_col_tab RETURN col_sub_type AS l_type col_sub_type := col_sub_type(); BEGIN FOR i IN (SELECT DISTINCT TABLE_NAME t_name FROM ALL_TAB_COLUMNS WHERE TABLE_NAME = 'TABLE_1') LOOP l_type.extend; l_type(l_type.last) := col_type(i.t_name); END LOOP; RETURN l_type; END; 可是在编译包类型时,我收到以下错误:
据我所知,我不能在包类型中行使范例OBJECT.是否有办理要领或其他要领来执行此操纵? 提前叩谢. 办理要领在PL / SQL中,您必需行使记录而不是工具.TYPE col_type IS RECORD ( col_name VARCHAR2(50) ); TYPE col_sub_type IS TABLE OF col_type; FUNCTION get_col_tab RETURN col_sub_type; 固然存在一些成果差别,但假如您只是想建设一组列界说,它们现实上是沟通的. 个中一个区别是记录范例不支持结构函数(隐式或显式).这意味着您必要单独分派每个字段: l_type(l_type.last).col_name := i.t_name; 另一种要领是行使批量网络: SELECT DISTINCT table_name t_name BULK COLLECT INTO l_type FROM all_tab_columns WHERE table_name = 'TABLE_1'; (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读