Oracle11g 如何通过oracle中的select语句将值插入表类型?
我是甲骨文的初学者。我创建的表类型如下所示:Oracle11g 如何通过oracle中的select语句将值插入表类型?,oracle11g,Oracle11g,我是甲骨文的初学者。我创建的表类型如下所示: TYPE metertable IS TABLE OF pseb.metermaster.meterid%type; 我不知道如何将值插入到该表类型中。我需要将以下查询的整个结果集存储到表类型中 select distinct(meterid) from pseb.consumerfeedermetermapper where feederid in (select distinct (fm.FeederID)
TYPE metertable IS TABLE OF pseb.metermaster.meterid%type;
我不知道如何将值插入到该表类型中。我需要将以下查询的整个结果集存储到表类型中
select distinct(meterid)
from pseb.consumerfeedermetermapper
where feederid in (select distinct (fm.FeederID)
from pseb.feedermaster fm,pseb.consumerfeedermetermapper cfm
where fm.substationid=v_v_type
and cfm.feederid=fm.feederid
and cfm.FeederID>0)
and meterid >0
order by meterid;
请帮助我完成此操作。使用批量收集将数据选择到该类型的变量中:
declare
mt metertable;
begin
select distinct(meterid)
bulk collect into mt
from pseb.consumerfeedermetermapper
where feederid in (select distinct (fm.FeederID)
from pseb.feedermaster fm,pseb.consumerfeedermetermapper cfm
where fm.substationid=v_v_type
and cfm.feederid=fm.feederid
and cfm.FeederID>0)
and meterid >0
order by meterid;
-- Now use mt...
end;
我也有同样的问题,下面的代码帮助我:
SET SERVEROUTPUT ON
DECLARE
TYPE t_bulk_collect_test_tab IS TABLE OF bulk_collect_test%ROWTYPE;
l_tab t_bulk_collect_test_tab;
l_cursor SYS_REFCURSOR;
BEGIN
-- Way 1
OPEN l_cursor FOR 'SELECT * FROM bulk_collect_test';
FETCH l_cursor
BULK COLLECT INTO l_tab;
CLOSE l_cursor;
DBMS_OUTPUT.put_line('Dynamic FETCH : ' || l_tab.count);
-- Way 2
EXECUTE IMMEDIATE 'SELECT * FROM bulk_collect_test' BULK COLLECT INTO l_tab;
DBMS_OUTPUT.put_line('Dynamic EXECUTE: ' || l_tab.count);
END;
/
您可以使用上述代码是否要插入从此查询中获取的数据?从pseb.feedermaster fm中选择distinctmeterid与pseb.ConsumerFeederMapper,其中feederid与pseb.feedermaster fm中选择DistinctFM.feederid,pseb.ConsumerFeederMapper cfm其中fm.substationid=v_v_type,cfm.feederid=fm.feederid和cfm.feederid>0和meterid>0,按meterid排序;
declare
type tab_type is table of consumerfeedermetermapper%rowtype;
tab_t tab_type;
begin
select distinct(meterid) bulk collect into tab_t
from pseb.consumerfeedermetermapper
where feederid in (select distinct (fm.FeederID)
from pseb.feedermaster fm,pseb.consumerfeedermetermapper cfm
where fm.substationid=v_v_type
and cfm.feederid=fm.feederid
and cfm.FeederID>0)
and meterid >0
order by meterid;
end;