【发布时间】:2015-07-05 21:05:41
【问题描述】:
我创建了一个临时表和一个存储函数来读取它。当我调用它时,会出现以下消息:
RA-22905: Zugriff auf Zeilen eines Objekts, das keine Nested Table ist, nicht möglich
22905. 00000 - "cannot access rows from a non-nested table item"
*Cause: attempt to access rows of an item whose type is not known at
parse time or that is not of a nested table type
*Action: use CAST to cast the item to a nested table type
Fehler in Zeile: 3 Spalte: 15
那么,我该怎么做 CAST 呢?
我心爱的功能:
create or replace PACKAGE BODY testlho2 IS
FUNCTION getBasicDate (app_in IN varchar2, termc_in IN varchar2)
return sys_refcursor is
l_rc SYS_REFCURSOR;
BEGIN
-- Populate temporary table
INSERT INTO temp_tab_test_lho2 (app, sla, tsl)
SELECT app, sla, tslstat
FROM pmon_orig_file
WHERE app = app_in and termcause = termc_in;
-- Open REF CURSOR for Output
open l_rc for
select app, sla, tsl
from temp_tab_test_lho2;
return l_rc;
END;
END testlho2 ;
【问题讨论】:
-
对不起,我的水晶球坏了。如果你发布你的函数,也许有人会说如何修复它。
-
创建或替换PACKAGE BODY testlho2 IS FUNCTION getBasicDate (app_in IN varchar2, termc_in IN varchar2) return sys_refcursor is l_rc SYS_REFCURSOR; BEGIN (-- 填充临时表) INSERT INTO temp_tab_test_lho2 (app, sla, tsl) SELECT app, sla, tslstat FROM pmon_orig_file WHERE app = app_in and termcause = termc_in; (-- Open REF CURSOR for Output) open l_rc for select app, sla, tsl from temp_tab_test_lho2;返回 l_rc;结尾; END testlho2 ;
-
这是我心爱的功能
-
乍一看,我没有看到 ORA-22905 的任何原因。表字段都是按顺序输入的吗?顺便说一句,你真的需要临时表吗?为什么不直接从 pmon_orig_file 返回选择?
标签: oracle function plsql temporary