Oracle错误(36,14):PL/SQL:ORA-22905:无法从非嵌套表项访问行
这真的让我恼火,所以我伸出了手 我在一个包中声明了一个Oracle SQL过程和几个对象Oracle错误(36,14):PL/SQL:ORA-22905:无法从非嵌套表项访问行,sql,oracle,procedure,Sql,Oracle,Procedure,这真的让我恼火,所以我伸出了手 我在一个包中声明了一个Oracle SQL过程和几个对象 TYPE myRecord IS RECORD ( myVal INTEGER ); myTab IS TABLE OF myRecord; procedure myProc(myCollection IN myTab); 在我试图从myCollection中选择的包体内部。在Oracle12c中,只需使用TABLE函数就可以了 BEGIN SELECT myVal FROM TABLE(
TYPE myRecord IS RECORD (
myVal INTEGER
);
myTab IS TABLE OF myRecord;
procedure myProc(myCollection IN myTab);
在我试图从myCollection中选择的包体内部。在Oracle12c中,只需使用TABLE函数就可以了
BEGIN
SELECT myVal FROM TABLE(myCollection);
例如,在版本11.2中,我似乎得到了错误(36,14):PL/SQL:ORA-22905:无法从非嵌套表项访问行
我已经看过了其他答案,但还不清楚我需要做什么才能让它工作。在11.2及更早版本中,您不能在SQL语句中使用PL/SQL声明的类型-相反,您需要在架构级别声明类型(即
创建或替换类型…
).@Boneist是全局声明类型时过程中的相同语法吗?是;如果您创建mytab的全局类型,您将在过程参数中使用该类型,就像在包中声明mytab类型一样。只是范围更广-即在包装之外。