它无法编译。怎么了?
TYPE recEniFlussiHub IS RECORD
(
FLVO_ID dbms_sql.varchar2_table,
flh_id_messaggio dbms_sql.varchar2_table,
flh_integrazione_id dbms_sql.varchar2_table
);
TYPE taof_RowCurEniFlussiHub IS TABLE OF recEniFlussiHub;
curEniFlussiHub taof_RowCurEniFlussiHub;
SELECT null FLVO_ID,
c.flh_id_messaggio,
c.flh_integrazione_id,
BULK COLLECT INTO curEniFlussiHub
FROM ENI_FLUSSI_HUB c
WHERE c.flh_fornitura = P_FLH_FORNITURA
答案 0 :(得分:1)
您已经错误地声明了您的记录类型(我假设您的列flh_id_messaggio
和flh_integrazione_id
本身不是嵌套表)。
如果要创建一个关联数组来保存所选的值,则每个字段本身不必是一个集合(并且在c.flh_integrazione_id
之后的select语句中有一个额外的逗号):
(我假设您的flvo_id
是VARCHAR2
,因为您尝试将其声明为VARCHAR2_TABLE
,如果它是NUMBER
,则在您的TYPE receniflussihub IS RECORD(
flvo_id VARCHAR2,
flh_id_messaggio eni_flussi_hub.flh_id_messaggio%TYPE,
flh_integrazione_id eni_flussi_hub.flh_integrazione_id%TYPE
);
TYPE taof_rowcureniflussihub IS TABLE OF receniflussihub;
cureniflussihub taof_rowcureniflussihub;
SELECT NULL flvo_id,
c.flh_id_messaggio,
c.flh_integrazione_id
BULK COLLECT INTO cureniflussihub
FROM eni_flussi_hub C
WHERE c.flh_fornitura = p_flh_fornitura;
中声明它为c.flh_integrazione_id
记录声明)。
TYPE receniflussihub IS RECORD(
flvo_id dbms_sql.varchar2_table,
flh_id_messaggio dbms_sql.varchar2_table,
flh_integrazione_id dbms_sql.varchar2_table
);
receniflussihub_rec receniflussihub;
SELECT NULL flvo_id,
c.flh_id_messaggio,
c.flh_integrazione_id
BULK COLLECT INTO receniflussihub_rec.flvo_id,
receniflussihub_rec.flh_id_messaggio,
receniflussihub_rec.flh_integrazione_id
FROM eni_flussi_hub C
WHERE c.flh_fornitura = p_flh_fornitura;
请参阅Here
希望它有所帮助...修改强>
从您的评论中,如果您需要选择收藏记录(而不是记录集合),那么您不需要声明表格TYPE,只需要记录您的十分记录类型并选择该表格(不要别忘了在你的代码中你的select语句中{{1}}之后还有额外的逗号:
试试这个:
{{1}}
答案 1 :(得分:1)
如果要在记录中使用嵌套表,则需要在BULK COLLECT子句中引用它们的元素。像这样:
SELECT null FLVO_ID,
c.flh_id_messaggio,
c.flh_integrazione_id
BULK COLLECT INTO curEniFlussiHub.FLVO_ID
, curEniFlussiHub.flh_id_messaggio
, curEniFlussiHub.flh_integrazione_id
FROM ENI_FLUSSI_HUB c
WHERE c.flh_fornitura = P_FLH_FORNITURA
此外,您只需要将变量定义为记录的实例:您不需要另外的表类型,即
declare
recEniFlussiHub IS RECORD
(
FLVO_ID dbms_sql.varchar2_table,
flh_id_messaggio dbms_sql.varchar2_table,
flh_integrazione_id dbms_sql.varchar2_table
);
curEniFlussiHub recEniFlussiHub;