Oracle 11g:如何在批量收集中动态选择多个列
我有一个类似下面示例的查询,其中我想使用一个join-to从一个有4列的表中动态批量收集2列,但我不断得到错误“变量不在选择列表中”。我相信这是因为查询的列比表少,但我不知道如何绕过它Oracle 11g:如何在批量收集中动态选择多个列,oracle,plsql,oracle11g,bulk-collect,Oracle,Plsql,Oracle11g,Bulk Collect,我有一个类似下面示例的查询,其中我想使用一个join-to从一个有4列的表中动态批量收集2列,但我不断得到错误“变量不在选择列表中”。我相信这是因为查询的列比表少,但我不知道如何绕过它 DECLARE TYPE test_table_type IS TABLE OF TEST_PRODUCTS%ROWTYPE; BULK_COLLECTOR test_table_type; BEGIN EXECUTE IMMEDIATE 'SELECT tp.PRODUCT AS
DECLARE
TYPE test_table_type IS TABLE OF TEST_PRODUCTS%ROWTYPE;
BULK_COLLECTOR test_table_type;
BEGIN
EXECUTE IMMEDIATE
'SELECT tp.PRODUCT AS PRODUCT, td.ALT_DESCRIPTION AS DESCRIPTION
FROM TEST_PRODUCTS tp
JOIN ALT_DESCRIPTIONS td ON tp.ALT_DESCRIPTION_ID = td.ALT_DESCRIPTION_ID'
BULK COLLECT INTO BULK_COLLECTOR;
END;
以下是表格示例:
CREATE TABLE TEST_PRODUCTS
(
PRODUCT_ID NUMBER,
PRODUCT VARCHAR2(50),
DESCRIPTION VARCHAR2(255)
ALT_DESCRIPTION_ID NUMBER,
INVENTORY_CODE VARCHAR2(100)
);
CREATE TABLE ALT_DESCRIPTIONS
(
ALT_DESCRIPTION_ID NUMBER,
ALT_DESCRIPTION VARCHAR2(255)
);
您正在从两个不同的表中进行选择,并尝试将其放入一个表的行类型中 您可能需要采取不同的方法—类似于以下内容:
DECLARE
TYPE test_record IS RECORD
(
PRODUCT VARCHAR2(50),
ALT_DESCRIPTION VARCHAR2(255)
);
type test_tab is table of test_record;
BULK_COLLECTOR test_tab;
BEGIN
EXECUTE IMMEDIATE
'SELECT tp.PRODUCT AS PRODUCT, td.ALT_DESCRIPTION AS DESCRIPTION
FROM TEST_PRODUCTS tp
JOIN ALT_DESCRIPTIONS td ON tp.ALT_DESCRIPTION_ID = td.ALT_DESCRIPTION_ID'
BULK COLLECT INTO BULK_COLLECTOR;
END;
只选择2个值,并尝试将它们放入具有5个属性的类型中。