的不是我在Oracle中简单的类型声明和一个简单的函数:ORA-22163:左手和右手边的集合是同一类型
TYPE col_sub_type IS TABLE OF VARCHAR2(50);
FUNCTION get_col_tab RETURN col_sub_type AS
l_type col_sub_type;
BEGIN
SELECT DISTINCT TABLE_NAME
BULK COLLECT INTO l_type
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME IN ('TABLE_1','TABLE_2');
RETURN l_type;
END;
的功能也因此它的包装规格声明可以用在包体中。
在我试图在SQL语句中使用此功能的代码之后,像这样:
AND col.table_name NOT IN (SELECT * FROM TABLE(get_col_tab()))
包体和规格均编译perfecly罚款,不过,当我试图运行包我得到:
ORA-22163: left hand and right hand side collections are not of same type
ORA-06512: at "PACKAGE_NAME", line 25
ORA-06512: at "PACKAGE_NAME", line 236
第25行是:
RETURN l_type;
236线是SELECT语句开头:
SELECT col.table_name
任何想法为何这会发生?
在此先感谢!
您可以发布,编译和没有足够的在这里工作了是什么问题表明了误差最小的例子。 – MT0
25行和236行并不总是表示错误在这些行中。也许错误经历了这些线,所以如果你可以分享,如果不是整个包,只是包含25行和236行的完整块。谢谢 – brenners1302