我正在尝试查询NESTED TABLE
using PL/SQL
(几个消息来源告诉我这是可能的)但我不断收到错误消息:ORA-21700: 对象不存在或已标记为删除。..
我不明白为什么它不让我这样做......我已经确定dados
变量中有内容...我输出它.count
它不是空的..有人可以告诉我这个吗?
谢谢提前...
procedure PREENCHE_CURSOR_ESTRANG_TOTAL(O_CURSOR out t_refcur) is
c_nips t_refcur;
dados T_PONTOS := T_PONTOS();--nested table instantiating..
i number;
nip number(8);
gerador_de_nips varchar2(600) := 'a biG SQL QUERY nobody needs to know about =P';
begin
i := 1;
open c_nips for gerador_de_nips;
loop
dados.extend;
fetch c_nips into nip;
exit when c_nips%notfound;
dados(i) := RETORNA_PONTOS(nip);
i := i+1;
end loop;
close c_nips;
open O_CURSOR for select * from table(dados); /*WHY*/
end PREENCHE_CURSOR_ESTRANG_TOTAL;
我不明白您遇到的具体错误,但通常您需要在 SQL 语句中包含对适当类型的显式转换:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
这是因为该语句从 PL/SQL 移交给 SQL 引擎进行处理,除了用户定义的变量之外,它没有任何有关变量类型的信息。
另外,这仅在类型 (t_pontos
) 在模式级别声明,即使用CREATE TYPE
陈述。如果它在 PL/SQL 代码中的某处声明,例如在包规范中,SQL 引擎无法访问类型定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)