Oracle 尝试使用select语句查询数据获取ORA-22905:无法访问非嵌套表项中的行

Oracle 尝试使用select语句查询数据获取ORA-22905:无法访问非嵌套表项中的行,oracle,plsql,Oracle,Plsql,我使用一个包EXCELTABLE从excel文件中读取数据,我使用的查询工作得很好,但问题是,每当我试图在存储过程中的for循环中使用同一个包时,它都会给我带来错误,因为ORA-22905:无法访问非嵌套表项中的行 下面是我使用的select查询:- select ROWNUM "ID","Netzelementtyp","Projekt_ID","Ticket_ID","Netzelement_Nr","Projektart","Statusliste_Status","Statuslis

我使用一个包EXCELTABLE从excel文件中读取数据,我使用的查询工作得很好,但问题是,每当我试图在存储过程中的for循环中使用同一个包时,它都会给我带来错误,因为ORA-22905:无法访问非嵌套表项中的行

下面是我使用的select查询:-

  select ROWNUM "ID","Netzelementtyp","Projekt_ID","Ticket_ID","Netzelement_Nr","Projektart","Statusliste_Status","Statusliste_Ist_Datum","Statusliste_Plan_Datum","Statusliste_Bemerkung" from 
  (select t."Netzelementtyp",t."Projekt_ID",t."Ticket_ID",t."Netzelement_Nr",t."Projektart",t."Statusliste_Status",t."Statusliste_Ist_Datum",t."Statusliste_Plan_Datum",t."Statusliste_Bemerkung" from table(
 EXCELTABLE.GETROWS(
  EXCELTABLE.GETFILE('DOC','TicketTracking2.xlsx')
   , 'Page1_4'
  , ' "Netzelementtyp"    number
    , "Projekt_ID"    number
    , "Ticket_ID"     varchar2(100)
    , "Netzelement_Nr"      NUMBER
      , "Projektart"  varchar2(1000)
    , "Statusliste_Status"  varchar2(100)
    , "Statusliste_Ist_Datum"  DATE
    , "Statusliste_Plan_Datum" DATE
    , "Statusliste_Bemerkung"  varchar2(4000)'
   , 'A2'
    )
  ) t) 
请参阅注释,它们提供的解决方法是使用动态sql:

OPEN my_refcursor FOR 'SELECT ...' USING <bind variables>

您可以阅读有关基本ORA-22905错误的更多信息。基本问题是EXCELTABLE.GETROWS返回管道化的ANYDATASET,它不是嵌套表;Oracle文档将其描述为不透明类型之一;数据库不知道这些类型的内部结构。我认为您应该能够使用访问单个元素,但正如上面的开发人员所建议的那样,使用动态refcursor看起来要简单得多。

如果我们能够看到您在存储过程的for循环中如何使用它。。。您的问题并向我们展示存储过程的完整代码我猜这不是他的过程。我在github上发现了类似的项目。项目正在实现ODCITable接口,结果类型是在执行期间创建的。任何日期集,。。。。